温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何实现Postgresql流复制主备切换

发布时间:2021-11-09 16:20:04 来源:亿速云 阅读:217 作者:iii 栏目:关系型数据库

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

--操作系统命令,判断发送进程还是接收进程
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流复制主备切换”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI