成都网站建设设计

将想法与焦点和您一起共享

如何实现Postgresql流复制主备切换-创新互联

本篇内容主要讲解“如何实现Postgresql流复制主备切换”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实现Postgresql流复制主备切换”吧!

丰台网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、自适应网站建设等网站项目制作,到程序开发,运营维护。创新互联成立与2013年到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
--操作系统命令,判断发送进程还是接收进程
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

到此,相信大家对“如何实现Postgresql流复制主备切换”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


文章名称:如何实现Postgresql流复制主备切换-创新互联
网页路径:http://chengdu.cdxwcx.cn/article/deehep.html