PostgreSQL流复制主从切换
0,前提确保PostgreSQL主从流复制是正常状态 1,从节点执行promote提升为主节点: 1.1 ###修改原从节点的pg_hba.conf,设置复制用户的IP为主节点 host replication replica_user 原始主节点IP/32 md51.2 ###原从节点上创建slot SELECT * FROM pg_create_physical_replication_slot('pgstandby_slave01');
1.3 ###执行promote提升为可读写 pg_ctl promote -D /usr/local/pgsql16/pg9000/data 1.4 ###检查节点状态 SELECT pg_is_in_recovery(); 从节点升主切换示例
2,原主节点以从节点身份加入复制 ###2.1,创建一个stand.single文件,用来标识当前节点以standby模式启动 touch standby.signal
###2.2,在postgresql.auto.conf文件,写入当前“主”节点信息,确保当前“主节点”上复制槽已经创建,流复制默认不会同步原始主节点上的“复制槽”到当前节点 # Do not edit this file manually! # It will be overwritten by the ALTER SYSTEM command. primary_conninfo = 'user=replica_user password=''******'' channel_binding=prefer host=原始从节点IP port=9000 sslmode=prefer sslcompression=0 sslcertmode=allow sslsni=1 ssl_min_protocol_version=TLSv1.2 gssencmode=disable krbsrvname=postgres gssdelegation=0 target_session_attrs=any load_balance_hosts=disable' primary_slot_name = 'pgstandby_slave01' ###2.3,修复当前节点的时间线 pg_rewind --target-pgdata=/usr/local/pgsql16/pg9000/data --source-server='host=***.***.***.*** port=9000 user=postgres dbname=postgres password=postgres' ### 2.4 重新授权文件权限 chown -R postgres:postgres /usr/local/pgsql16/pg9000/data chmod 700 -R /usr/local/pgsql16/pg9000/data ###2.5重启当前节点 systemctl restart postgresql9000
###2.6检查复制状态
select pg_is_in_recovery(),status from pg_stat_wal_receive; 主节点以从节点重新加入复制示例
3,总结: 1,注意前置条件:包括新的主节点复制槽创建,pg_hba.conf配置文件修改
2,新的从节点需要做pg_rewind修复,同时需要重新授权
3,保持思路清晰,操作步骤规范化
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]