You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL+repmgr+TimescaleDB容器Standby节点启动后即刻停止求助

问题描述

基于Bitnami postgresql-repmgr:12.4.0-debian-10-r90 镜像构建了集成TimescaleDB的自定义Docker镜像,主节点运行正常,但Standby节点启动后即刻停止。容器日志无明确错误信息,查看PostgreSQL日志发现节点收到快速关闭请求。以下是相关配置、命令及日志,请求排查问题原因。


Dockerfile

FROM bitnami/postgresql-repmgr:12.4.0-debian-10-r90
USER root
RUN apt-get update \
 && apt-get -y install \
    gcc cmake git clang-format clang-tidy openssl libssl-dev \
 && git clone https://github.com/timescale/timescaledb.git
RUN cd timescaledb \
 && git checkout 2.8.1 \
 && ./bootstrap -DREGRESS_CHECKS=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
 && cd build \
 && make \
 && make install
RUN echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen && locale-gen
USER 1001

镜像构建命令

docker build -f dockerfile -t my/pg-repmgr-12-tsdb:12.4.0-debian-10-r90 .

Standby节点容器日志

postgresql-repmgr 18:51:11.00 
postgresql-repmgr 18:51:11.00 Welcome to the Bitnami postgresql-repmgr container
postgresql-repmgr 18:51:11.00 Subscribe to project updates by watching https://github.com/bitnami/bitnami-docker-postgresql-repmgr
postgresql-repmgr 18:51:11.00 Submit issues and feature requests at https://github.com/bitnami/bitnami-docker-postgresql-repmgr/issues
postgresql-repmgr 18:51:11.01 
postgresql-repmgr 18:51:11.03 INFO  ==> ** Starting PostgreSQL with Replication Manager setup **
postgresql-repmgr 18:51:11.05 INFO  ==> Validating settings in REPMGR_* env vars...
postgresql-repmgr 18:51:11.06 INFO  ==> Validating settings in POSTGRESQL_* env vars..
postgresql-repmgr 18:51:11.06 INFO  ==> Querying all partner nodes for common upstream node...
postgresql-repmgr 18:51:11.13 INFO  ==> Auto-detected primary node: 'pg-0:5432'
postgresql-repmgr 18:51:11.14 INFO  ==> Preparing PostgreSQL configuration...
postgresql-repmgr 18:51:11.14 INFO  ==> postgresql.conf file not detected. Generating it...
postgresql-repmgr 18:51:11.26 INFO  ==> Preparing repmgr configuration...
postgresql-repmgr 18:51:11.27 INFO  ==> Initializing Repmgr...
postgresql-repmgr 18:51:11.28 INFO  ==> Waiting for primary node...
postgresql-repmgr 18:51:11.30 INFO  ==> Cloning data from primary node...
postgresql-repmgr 18:51:12.11 INFO  ==> Initializing PostgreSQL database...
postgresql-repmgr 18:51:12.11 INFO  ==> Cleaning stale /bitnami/postgresql/data/standby.signal file
postgresql-repmgr 18:51:12.12 INFO  ==> Custom configuration /opt/bitnami/postgresql/conf/postgresql.conf detected
postgresql-repmgr 18:51:12.13 INFO  ==> Custom configuration /opt/bitnami/postgresql/conf/pg_hba.conf detected
postgresql-repmgr 18:51:12.16 INFO  ==> Deploying PostgreSQL with persisted data...
postgresql-repmgr 18:51:12.19 INFO  ==> Configuring replication parameters
postgresql-repmgr 18:51:12.23 INFO  ==> Configuring fsync
postgresql-repmgr 18:51:12.25 INFO  ==> Setting up streaming replication slave...
postgresql-repmgr 18:51:12.28 INFO  ==> Starting PostgreSQL in background...
postgresql-repmgr 18:51:12.52 INFO  ==> Unregistering standby node...
postgresql-repmgr 18:51:12.59 INFO  ==> Registering Standby node...
postgresql-repmgr 18:51:12.64 INFO  ==> Running standby follow...
postgresql-repmgr 18:51:12.71 INFO  ==> Stopping PostgreSQL...
waiting for server to shut down.... done
server stopped

PostgreSQL日志

2022-10-17 12:37:51.070 GMT [171] LOG:  pgaudit extension initialized
2022-10-17 12:37:51.070 GMT [171] LOG:  starting PostgreSQL 12.4 on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
2022-10-17 12:37:51.072 GMT [171] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2022-10-17 12:37:51.072 GMT [171] LOG:  listening on IPv6 address "::", port 5432
2022-10-17 12:37:51.074 GMT [171] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2022-10-17 12:37:51.106 GMT [171] LOG:  redirecting log output to logging collector process
2022-10-17 12:37:51.106 GMT [171] HINT:  Future log output will appear in directory "/opt/bitnami/postgresql/logs".
2022-10-17 12:37:51.119 GMT [173] LOG:  database system was interrupted; last known up at 2022-10-17 12:37:49 GMT
2022-10-17 12:37:51.242 GMT [173] LOG:  entering standby mode
2022-10-17 12:37:51.252 GMT [173] LOG:  redo starts at 0/E000028
2022-10-17 12:37:51.266 GMT [173] LOG:  consistent recovery state reached at 0/E000100
2022-10-17 12:37:51.266 GMT [171] LOG:  database system is ready to accept read only connections
2022-10-17 12:37:51.274 GMT [177] LOG:  started streaming WAL from primary at 0/F000000 on timeline 1
2022-10-17 12:37:51.579 GMT [171] LOG:  received fast shutdown request
2022-10-17 12:37:51.580 GMT [171] LOG:  aborting any active transactions
2022-10-17 12:37:51.580 GMT [177] FATAL:  terminating walreceiver process due to administrator command
2022-10-17 12:37:51.581 GMT [174] LOG:  shutting down
2022-10-17 12:37:51.601 GMT [171] LOG:  database system is shut down

主节点启动命令

docker run --detach  --name pg-0   --network my-network   --env REPMGR_PARTNER_NODES=pg-0,pg-1   --env REPMGR_NODE_NAME=pg-0   --env REPMGR_NODE_NETWORK_NAME=pg-0   --env REPMGR_PRIMARY_HOST=pg-0   --env REPMGR_PASSWORD=repmgrpass   --env POSTGRESQL_POSTGRES_PASSWORD=adminpassword   --env POSTGRESQL_USERNAME=customuser   --env POSTGRESQL_PASSWORD=custompassword   --env POSTGRESQL_DATABASE=customdatabase --env POSTGRESQL_SHARED_PRELOAD_LIBRARIES=repmgr,pgaudit,timescaledb   -p 5420:5432  -v /etc/localtime:/etc/localtime:ro  my/pg-repmgr-12-tsdb:12.4.0-debian-10-r90

Standby节点启动命令

docker run   --name pg-1   --network my-network     --env REPMGR_PARTNER_NODES=pg-0,pg-1     --env REPMGR_NODE_NAME=pg-1     --env REPMGR_NODE_NETWORK_NAME=pg-1     --env REPMGR_PRIMARY_HOST=pg-0   --env REPMGR_PASSWORD=repmgrpass   --env POSTGRESQL_POSTGRES_PASSWORD=adminpassword     --env POSTGRESQL_USERNAME=customuser     --env POSTGRESQL_PASSWORD=custompassword     --env POSTGRESQL_DATABASE=customdatabase   --env POSTGRESQL_SHARED_PRELOAD_LIBRARIES=repmgr,pgaudit,timescaledb    -v /etc/localtime:/etc/localtime:ro   -p 5421:5432   my/pg-repmgr-12-tsdb:12.4.0-debian-10-r90

排查方向及解决建议
  1. TimescaleDB权限问题:编译安装TimescaleDB后,扩展文件权限可能未适配Bitnami容器的1001用户。在Dockerfile的make install后添加:

    RUN chown -R 1001:1001 /usr/local/lib/postgresql/12/lib/timescaledb*
    
  2. 扩展加载兼容性:主节点已创建TimescaleDB扩展,Standby节点克隆数据后加载扩展时可能存在初始化冲突。尝试调整POSTGRESQL_SHARED_PRELOAD_LIBRARIES顺序,将timescaledb放在最后,或在主节点创建扩展时确保操作可被Standby复制(TimescaleDB在Standby无需手动创建扩展,仅需加载库文件)。

  3. Bitnami启动脚本逻辑:查看容器内/opt/bitnami/scripts/postgresql-repmgr/run.sh脚本,检查standby follow执行后的检查逻辑,是否因节点状态验证失败触发主动关闭。

  4. 清理编译依赖:Dockerfile中安装编译依赖后未清理,可能导致镜像内文件冲突。在make install后添加:

    RUN apt-get purge -y --auto-remove gcc cmake git clang-format clang-tidy openssl libssl-dev && rm -rf /timescaledb /var/lib/apt/lists/*
    

内容的提问来源于stack exchange,提问作者jyoudan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:35:17