其他分享
首页 > 其他分享> > 基于Postgre 14的主备复制和主备切换

基于Postgre 14的主备复制和主备切换

作者:互联网

环境信息

系统版本: windows 10
版本:PostgreSQL14
主机IP: 192.168.10.101
备库IP:192.168.10.102

主库操作

  1. 设置pg_hba.conf添加以下:
host				all				all				0.0.0.0/0				md5  
host 		replication 		postgres 		192.168.10.102/32 			md5   #这句话的意思允许从数据库连接主数据库去拖wal日志数据
  1. 设置主库的postgresql.conf
wal_level = hot_standby #主从设置为热血模式,流复制必选
max_wal_senders = 3 #流复制允许连接进程
archive_mode = on

备注:仅列出主要参数,其它参数根据实际情况设置。

  1. 重载配置文件
pg_ctl reload -D $PGDATA 				 #$PGDATA为postgre下data文件地址

备库操作

  1. 使用pg_basebackup 生产备库
pg_basebackup -h 192.168.10.101 -U postgres -F p -P -R -Xs -v -D  $PGDATA 

备注:这时表空间目录,$PGDATA 目录已经复制过来了,这里使用了 -X 参数,在备份完成之后,会到主库上收集 pg_basebackup 执行期间产生的 WAL 日志,在 9.2 版本之后支持 -Xs 即stream 形式,这种模式不需要收集主库的 WAL 文件,而能以 stream 复制方式直接追赶主库。

  1. 设置从库 postgresql.conf
primary_conninfo = 'host=192.168.10.101 port=5432 user=postgres password=123456'
recovery_target_timeline = latest # 默认
hot_standby_feedback = on #可选,查询冲突时向主反馈
max_connections = 1000 # 大于等于主节点,正式环境应当重新考虑此值的大小
hot_standby = on  #在备份的同时允许查询
max_standby_streaming_delay = 30s #可选,流复制最大延迟
wal_receiver_status_interval = 10s
hot_standby_feedback = on

3.编辑standby.signal文件

standby_mode = 'on'
  1. 重新启动从节点
  2. 验证主从
select pg_is_in_recovery();   #f代表主库 t代表备库
select client_addr,sync_state from pg_stat_replication  #可以查询主库下面有多少个备库

主备切换

  1. pg12开始新增了一个pg_promote()函数,让我们可以通过SQL命令激活备库。

pg_promote()语法:

pg_promote(wait boolean DEFAULT true, wait_seconds integer DEFAULT 60)

两个参数:

wait: 表示是否等待备库的 promotion 完成或者 wait_seconds 秒之后返回成功,默认值为 true。

wait_seconds: 等待时间,单位秒,默认 60

  1. 切换实例
systemctl stop postgresql
select pg_promote(true,60);
select pg_is_in_recovery();   #f代表主库 t代表备库
  1. 原主库修复后,原备库降为备库
standby_mode = 'on'
pg_basebackup -h 192.168.10.101 -U postgres -F p -P -R -D "C:\Program Files\PostgreSQL\14\data" 
systemctl start postgresql

标签:主库,备库,14,standby,Postgre,192.168,主备,pg,postgres
来源: https://blog.csdn.net/qq_36606793/article/details/122679006