docker部署postgresSQL主从的方法步骤例子解析

Docker上部署PostgreSQL主从复制步骤

在这里插入图片描述
要在Docker上部署PostgreSQL的主从复制,可以遵循以下步骤:

  1. 创建网络(如果需要跨容器通信):

    docker network create --driver bridge --subnet=172.18.12.0/16 --gateway=172.18.12.1 mynet
    
  2. 运行主数据库容器

    docker run --name pg_master --restart=always \
    --network=mynet --ip 172.18.12.100 \
    -v /path/to/master/data:/var/lib/postgresql/data \
    -e POSTGRES_PASSWORD=yourpassword \
    -p 5432:5432 \
    -d postgres:tag
    

    其中 /path/to/master/data 是宿主机上用于存储数据的目录,yourpassword 是数据库的密码,tag 是PostgreSQL镜像的标签。

  3. 配置主数据库

    • 进入容器:
      docker exec -it pg_master bash
      
    • 创建复制用户:
      CREATE ROLE replica login replication encrypted password 'replicationpassword';
      
    • 编辑 pg_hba.conf 文件,允许从数据库连接:
      host replication replica 172.18.12.101/32 trust
      
    • 编辑 postgresql.conf 文件,设置主数据库的参数:
      wal_level = replica
      hot_standby = on
      
  4. 运行从数据库容器

    docker run --name pg_slave --restart=always \
    --network=mynet --ip 172.18.12.101 \
    -v /path/to/slave/data:/var/lib/postgresql/data \
    -e POSTGRES_PASSWORD=yourpassword \
    -p 5433:5432 \
    -d postgres:tag
    
  5. 初始化从数据库

    • 进入从数据库容器:
      docker exec -it pg_slave bash
      
    • 初始化数据库并同步数据:
      pg_basebackup -h 172.18.12.100 -U replica -D /var/lib/postgresql/data -X stream
      
  6. 配置从数据库

    • 创建 recovery.conf 文件:
      standby_mode = 'on'
      primary_conninfo = 'host=172.18.12.100 port=5432 user=replica password=replicationpassword'
      
    • 重启从数据库容器:
      docker restart pg_slave
      
  7. 验证主从复制状态

    • 进入主数据库容器:
      docker exec -it pg_master psql -U postgres
      
    • 查询复制状态:
      SELECT * FROM pg_stat_replication;
      

以上步骤提供了一个基本的框架,具体参数和步骤可能需要根据实际情况进行调整。务必确保所有的路径、密码和IP地址都正确无误,并且符合你的网络配置。记得在生产环境中使用更安全的密码和配置。

喜欢本文,请点赞、收藏和关注!

使用 Docker 部署 Postgres 主从复制可按以下步骤进行: ### 准备工作 - 提前准备好 Postgres 数据库镜像,版本 10.1。若没有该镜像,可使用如下命令拉取: ```bash docker pull postgres:10.1 ``` 拉取完成后,可通过 `docker images` 查看 Docker 镜像中是否存在该镜像 [^1][^3]。 - 在宿主机下创建挂载目录: ```bash # 创建主库挂载目录位置 mkdir /postgre/postgrePrimary/data # 创建从库挂载目录位置 mkdir /postgre/postgreStandby/data # 创建临时数据目录位置 mkdir /postgre/postgreReplica/data ``` [^3] ### 启动主库镜像 使用以下命令启动主库镜像: ```bash docker run --name postgres --net hylink --log-opt max-size=1g --log-opt max-file=3 \ -v /home/hylink/docker/container/postgres/:/var/lib/postgresql/data/ \ -v /etc/localtime:/etc/localtime:ro \ --restart=always \ -p 5432:5432 -e POSTGRES_PASSWORD=Hylink2014@postgres -d 599272bf538f ``` 这里的 `599272bf538f` 是 Postgres 10.1 镜像的 ID [^1]。 ### 启动从库镜像 按照类似主库的方式启动从库镜像,需注意修改容器名称、挂载目录等信息。 ### 验证主从复制状态 - 进入主数据容器: ```bash docker exec -it pg_master psql -U postgres ``` - 查询复制状态: ```sql SELECT * FROM pg_stat_replication; ``` [^2] ### 可能遇到的问题 使用 Docker 配置从库时,数据迁移的那一步可能会出现问题,可能会导致 Docker 直接报错,此时需要删除容器并重建 [^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乔丹搞IT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值