在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文件,设置主数据库的参数:
      listen_addresses = '*'
      wal_level = replica
      archive_mode = on
      archive_command = '/bin/date'
      max_wal_senders = 5
      wal_keep_segments = 20
      
  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
    

    其中/path/to/slave/data是宿主机上用于存储从数据库数据的目录。

  5. 初始化从数据库

    • 进入从数据库容器:
      docker exec -it pg_slave bash
      
    • 删除现有的数据(如果有):
      rm -rf /var/lib/postgresql/data/*
      
    • 使用pg_basebackup从主数据库初始化数据:
      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'
      recovery_target_timeline = 'latest'
      
    • 编辑postgresql.conf文件,设置从数据库的参数:
      wal_level = replica
      hot_standby = on
      
  7. 重启从数据库容器

    docker restart pg_slave
    
  8. 验证主从复制状态

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

乔丹搞IT

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

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

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

打赏作者

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

抵扣说明:

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

余额充值