pg12主从搭建(同步搭建)以及注意问题

默认情况下,我们搭建的主从是异步模式。如果希望搭建同步模式,需要主库修改:

synchronous_standby_names:指定需要同步的机器

synchronous_commit:on

其中synchronous_standby_names对应的是从库中的stb2:

primary_conninfo = 'application_name=stb2 host=172.30.78.7  port=5432 user=repuser password=repuser'

主库执行:

alter system set synchronous_standby_names='stb2'

ostgres=# select * from pg_stat_replication;
-[ RECORD 1 ]----+------------------------------
pid              | 119983
usesysid         | 18828
usename          | repuser
application_name | stb2
client_addr      | 172.30.78.2
client_hostname  | 
client_port      | 40044
backend_start    | 2020-10-20 18:06:19.578585+08
backend_xmin     | 2053276310
state            | streaming
sent_lsn         | 103/A9F3570
write_lsn        | 103/A9F3570
flush_lsn        | 103/A9F3570
replay_lsn       | 103/A9F3570
write_lag        | 
flush_lag        | 
replay_lag       | 
sync_priority    | 1
sync_state       | sync
reply_time       | 2020-10-20 18:29:11.648517+08

注意问题:

  之前sync_status一直都是async(异步模式),无法修改为同步模式。后面发现是因为主库和从库的postgres.aout.conf中相关参数不正确。比如:主库synchronous_standby_names和从库中rimary_conninfo = 'application_name=stb2 。这个需要注意

 

主从同步延迟查询:

SELECT  
       pg_wal_lsn_diff(A .c1, replay_lsn) /(1024 * 1024) AS slave_latency_MB,
       pg_wal_lsn_diff(A .c1, sent_lsn) /(1024 * 1024) AS send_latency_MB,
       pg_wal_lsn_diff(A .c1, flush_lsn) /(1024 * 1024) AS flush_latency_MB,
       state,
       backend_start,
       now()::timestamp with time zone
   FROM pg_stat_replication, pg_current_wal_lsn() AS A(c1)
   ORDER BY slave_latency_MB, send_latency_MB DESC
   LIMIT 1;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是 Docker PostgreSQL12 流复制主从同步的配置和切换步骤: 1. 首先,在主数据库中修改 postgresql.conf 和 pg_hba.conf 文件,分别设置流复制相关参数和允许从服务器连接。 postgresql.conf 文件中需要设置以下参数: ``` wal_level = replica max_wal_senders = 5 wal_keep_segments = 32 ``` pg_hba.conf 文件中需要添加以下规则: ``` host replication all <从服务器IP地址>/32 md5 ``` 2. 重新启动主服务器,使配置生效。 3. 在从服务器中创建一个空的目标数据库,并且在 postgresql.conf 文件中设置以下参数: ``` hot_standby = on ``` 4. 使用 pg_basebackup 命令将主服务器上的数据复制到从服务器上: ``` pg_basebackup -h <主服务器IP地址> -U <用户名> -D /var/lib/postgresql/data -P --xlog-method=stream ``` 5. 在从服务器中创建一个 recovery.conf 文件,指定流复制配置参数: ``` standby_mode = on primary_conninfo = 'host=<主服务器IP地址> port=<主服务器端口> user=<用户名> password=<密码>' ``` 6. 启动从服务器。 7. 可以使用 pg_ctl 命令来检查主从同步状态: ``` pg_ctl status -D /var/lib/postgresql/data ``` 8. 如果需要切换主从角色,需要在从服务器上执行以下步骤: - 在主服务器上停止 PostgreSQL 服务; - 在从服务器上编辑 recovery.conf 文件,修改 primary_conninfo 参数为从服务器的连接信息; - 在从服务器上启动 PostgreSQL 服务; - 验证从服务器是否已成为新的主服务器。 希望这些步骤能够帮助到你,如果有任何问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值