惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The Cloudflare Blog
U
Unit 42
D
Docker
Hugging Face - Blog
Hugging Face - Blog
博客园 - 聂微东
Recent Announcements
Recent Announcements
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
Last Week in AI
Last Week in AI
V
Visual Studio Blog
I
InfoQ
Google DeepMind News
Google DeepMind News
小众软件
小众软件
L
LangChain Blog
C
Check Point Blog
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
J
Java Code Geeks
罗磊的独立博客

博客园 - Hey,Coder!

微信小程序 web方案实现调音器功能 systemctl slice配置docker最大占用cpu 内存 pipenv环境变量配置 .net8验证码 数据库差异对比工具 docker部署prometheus grafana pgexporter Alertmanager ubuntu24 换源 ssh配置 ubuntu24 Harbor部署 ubuntu24 kvm部署 cockpit web管理界面 .net api代理 Ubuntu 24.04 DMAR IOMMU 报错修复 uniapp iOS App 上架 vs文件软链接 Docker 网络别名 .net8通用中间件处理公共返回值结构 .net环境下OpenTelemetry Body 读取注意事项 jaeger界面显示异常 .net opentelemetry collector jaeger c# opentelemetry 自定义export c# opentelemetry 自定义export c# 生成对象的初始化代码 Elasticsearch ILM 与 Data Stream 概念及实例说明文档 portainer httphelper封装 Ocelot + Consul + SignalR 粘性会话 正交软件架构 rabbitmq总结与c#示例 docker rabbitmq quartz dashboard docker consul registrator 服务自动注册consul 微服务动态扩容
docker postgresql17 主从复制
Hey,Coder! · 2026-06-18 · via 博客园 - Hey,Coder!
//启动主库容器
sudo docker run -d  --name postgres -e TZ=Asia/Shanghai -e POSTGRES_USER=dev  -e POSTGRES_PASSWORD=testPassword --restart always -p 5432:5432 -v /server/db/pg/data:/var/lib/postgresql/data postgres:17.5

//创建复制专用账号
sudo docker exec -it postgres psql -U dev  -c "CREATE USER replicator WITH REPLICATION LOGIN PASSWORD 'testPassword';"

//修改 pg_hba.conf,放行复制连接
//docker exec postgres sh -c 'echo "host replication replicator 0.0.0.0/0 md5" >> /var/lib/postgresql/data/pg_hba.conf'
docker exec -it pg-primary bash
# 容器内执行:
echo "host replication replicator 0.0.0.0/0 md5" >> /var/lib/postgresql/data/pg_hba.conf
exit


//打开 WAL 流复制参数
docker exec postgres  psql -U dev  -c "ALTER SYSTEM SET wal_level = 'replica';"
docker exec postgres  psql -U dev  -c "ALTER SYSTEM SET max_wal_senders = 10;"
docker exec postgres  psql -U dev  -c "ALTER SYSTEM SET max_replication_slots = 10;"
docker exec postgres  psql -U dev   -c "ALTER SYSTEM SET hot_standby = 'on';"

//启主库让 WAL level 生效
docker restart postgres 


//创建从库的文件目录
mkdir /server/db/pg_slave/data

//启动一个一次性容器,执行 pg_basebackup把主库数据写到  /server/db/pg_slave/data:

docker run --rm \
-e PGPASSWORD='testPassword' \
  -v  /server/db/pg_slave/data:/var/lib/postgresql/data \
  postgres:17.5 \
  pg_basebackup \
    -h 127.0.0.1 \
    -p 5432 \
    -U replicator \
    -D /var/lib/postgresql/data \
    -Xs -P -R -v


//启动从库容器
docker run -d \
  --name pg-replica \
  -p 5433:5432 \
  -v /server/db/pg_slave/data:/var/lib/postgresql/data \
  -e POSTGRES_PASSWORD=testPassword \
  -e TZ=Asia/Shanghai \
  postgres:17.5

[参考]
pg16主备主从