ITPub博客

首页 > 数据库 > PostgreSQL > 【PG流复制】Postgresql流复制主备切换

【PG流复制】Postgresql流复制主备切换

原创 PostgreSQL 作者:xysoul_云龙 时间:2019-01-27 09:45:44 0 删除 编辑
--操作系统命令,判断发送进程还是接收进程
ps -ef | grep "wal" | grep -v "grep"
--数据查看
select pid,usename,application_name,client_addr,state,sync_state from pg_stat_replication;
--or 备库
select pid,status,last_msg_send_time,last_msg_receipt_time,conninfo from pg_stat_wal_receiver;
--系统函数查看
select pg_is_in_recovery();
--数据库控制信息
pg_controldata | grep cluster
--查看recovery.conf 配置文件
--主备切换 文件触发方式  9.0之前的版本
--1、 配置备库文件,添加trigger_file参数  recovery.conf
trigger_file='/pgdata/data/.postgresql.trigger.5432'
--2、关闭主库
pg_ctl stop -m fast
--3、创建触发文件,重启备库,观察recovery.conf 是否变成recovery.done
touch /pgdata/data/.postgresql.trigger.5432
--4、老主库 变成备库
--编辑recovery.conf文件
recovery_target_timeline='latest'
standby_mode=on
primary_conninfo='host=192.168.8.25 port=5432 user=repuser'
--密码文件
cat .pgpass
192.168.8.25:5432:replication:repuser:re12a345
192.168.8.81:5432:replication:repuser:re12a345
chmod 0600 .pgpass
--主备切换  pg_ctl promote 方式
--1、关闭主库 pg_ctl stop -m fash
--2、备库执行  pg_ctl promote
--3、老主库切换成备库
--pg_rewind 流复制维护数据同步工具
--当备库激活成主库时,如果没有关闭老的主库,这时老的主库不能切换成备库, 不需要重新备份,pg_rewind 复制变化(增量刷新同步)
--前提条件,满足其一即可
1、postgresql.conf 配置文件中 wal_log_hints 参数设置成on,需重启数据库
2、数据库安装时initdb 初始化时使用了--data-checksums,发现io错误,开启性能有损耗
--node2 激活备库
--node1 关闭备库,使用pg_rewind 增量同步
pg_rewind --target-pgdata $PGDATA --source-server='host=192.168.8.25 posrt=5432 user=postgres dbname=postgres' -P 
--以上命令执行成功, postgres用户密码会写入~/.pgpass
--修改recovery.conf 启动新备库
--延迟备库 recovery.conf 添加参数,目前支持s,min,h,d,ms
recovery_min_apply_delay=1min
--同步流复制,延迟参数优先
synchronous_commit=on 
recovery_min_apply_delay=1min #优先
--remote_aply
synchronous_commit=remote_apply #主库操作被阻塞1分钟,备库应用完成才返回结果
recovery_min_apply_delay=1min #优先
--同步复制优选提交,一主两备,注意,当同步库中有宕机的,主库会阻塞
synchronous_standby_names=db1,db2  # 备库列表 第一个为同步备库,第二个潜在的同步备库
synchronous_standby_names='FIRST 2(db1,db2,db3)'  # 前两个为同步备库,第三个为潜在同步备库
synchronous_standby_names='ANY 2(db1,db2,db3)'  # 任意两个为同步备库,其他为潜在同步备库
--级联复制a>b>c
--1、异步流复制,部署备库b,复制正常,开始部署备库c,c执行 -h a
pg_basebackup -D /pgdata/data -Fp -Xs -v -P -h  192.168.28.74 -p 5432 -U repuser
--2、配置c recovery.conf 文件,host b
recovery_target_timeline='latest'
standby_mode=on
primary_conninfo='host=192.168.8.25 port=5432 user=repuser application_name=c'
--3、启动c



--文盲筱烨

2019年1月27日

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29487349/viewspace-2564941/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
主要从事数据库相关工作,其他操作系统、中间件等也有涉及,热衷分享、开源,支持国产,期待中华民族全面的伟大复兴。近日骤然醒悟,欲在IT江湖中闯荡一番,如有幸在诸多侠客中留点踪迹,也算不虚此行。 【文盲筱烨】好读书爱运动的IT技术爱好者 微博:文盲筱烨 微信公众号:筱烨视点

注册时间:2014-02-15

  • 博文量
    165
  • 访问量
    708404