IT评测·应用市场-qidao123.com技术社区

标题: PostgreSql Docker 主从热备,异步流复制方案 [打印本页]

作者: 曹旭辉    时间: 2024-11-28 18:28
标题: PostgreSql Docker 主从热备,异步流复制方案
环境说明

方案步调

0. 宿主机预备:

1. 主数据库预备:

  1. docker run --name pgsmaster -p 5400:5432 -e POSTGRES_PASSWORD=123456 -v C:\Users\Administrator\docker\Postgresql\replication\pgsmaster:/var/lib/postgresql/data -d postgres
复制代码
  1. # 1.进入容器
  2. docker exec -it pgsmaster bash
  3. # 2.连接PostgreSQL
  4. psql -U postgres
  5. # 3.创建用户
  6. // replicator: 复制账号; 123456: 认证密码
  7. create role replicator login replication encrypted password '123456';
  8. # 4.验证用户
  9. \du
  10. # 出现如下列表则用户创建成功
  11. List of roles
  12. Role name  | Attributes
  13. -----------+-------------------------------------------
  14. postgres   | Superuser, Create role, Create DB, Replication, Bypass RLS
  15. replicator | Replication
复制代码
  1.         host    replication     replicator  172.17.0.0/16       md5
复制代码
到这里主数据库就预备好了~
2. 从数据库预备:

  1. docker run --name pgsslave -p 5401:5432 -e POSTGRES_PASSWORD=123456 -v C:\Users\Administrator\docker\Postgresql\replication\pgsslave:/var/lib/postgresql/data -d postgres
复制代码
  1.         # 1. 进入容器
  2.         docker exec -it pgsslave bash
  3.         # 2. 切换postgres用户
  4.         su postgres
  5.         # 3. 执行复制, 注意IP, 需要输入密码即主数据库创建复制用户replicator的密码‘123456’
  6.         pg_basebackup -h 172.17.0.6 -U replicator -D /var/lib/postgresql/data/tempdata -X stream -P
复制代码
  1.         1. primary_conninfo = 'host=172.17.0.6 port=5432 user=replicator password=123456' # 配置连接主数据库,注意IP和端口号
  2.         2. hot_standby = on # 说明这台机器不仅仅是用于数据归档,也用于数据查询
  3.         3. max_standby_streaming_delay = 30s # 数据流备份的最大延迟时间
  4.         4. wal_receiver_status_interval = 10s # 多久向主报告一次从的状态
  5.         5. hot_standby_feedback = on # 如果有错误的数据复制,是否向主进行反馈
复制代码
  1.         standby_mode = 'on'
复制代码
到这里从数据库也配置好了~
3. 验证:

  1.         psql -U postgres -x -c "select * from pg_stat_replication;"
复制代码
  1.         -[ RECORD 1 ]----+------------------------------
  2.         pid              | 65
  3.         usesysid         | 16388
  4.         usename          | replicator
  5.         application_name | walreceiver
  6.         client_addr      | 172.17.0.7
  7.         client_hostname  |
  8.         client_port      | 56664
  9.         backend_start    | 2024-11-28 05:44:17.805887+00
  10.         backend_xmin     | 743
  11.         state            | streaming
  12.         sent_lsn         | 0/5000148
  13.         write_lsn        | 0/5000148
  14.         flush_lsn        | 0/5000148
  15.         replay_lsn       | 0/5000148
  16.         write_lag        |
  17.         flush_lag        |
  18.         replay_lag       |
  19.         sync_priority    | 0
  20.         sync_state       | async
  21.         reply_time       | 2024-11-28 05:45:57.855411+00
复制代码
到这里,配置完毕~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4