postgresql13主从切换

1.主库(10.124.50.13)故障,停掉主库
systemctl stop pgsql.service

2.从库(10.124.50.14)提到主库

su - postgres

pg_ctl promote -D /data/pgsql-13.11/data

提升从库为主库之后,可以看到,后台进程中不再有startup recovering,以及walreceiver streaming进程了,同时多了postgres: walwriter 写进程;

$PGDATA/standby.signal文件自动消失了. 这是告诉PostgreSQL,我现在不再是备库了,我的身份是主库了

3.新主库(10.124.50.14)删除primary_conninfo条目

原来的主从状态

postgres=# show primary_conninfo;

primary_conninfo ------------------------------------------------------------

user=replica password=replica host=10.124.50.13 port=5432

(1 row)

然后将之前主从同步的信息删除掉,$PGDATA/postgresql.auto.conf文件中的primary_conninfo

systemctl reload pgsql.service

重载配置后后主从状态如下即可

postgres=# show primary_conninfo;

primary_conninfo ------------------

(1 row)

4.通过原主库(10.124.50.13)上nginx四层代理新主库(10.124.50.14)的地址,保持对外的地址不变,便于服务重连

此步骤结束后,服务即可恢复

5.新主库(10.124.50.14)修改pg_hba.conf文件,在其中添加允许新备库(原主库10.124.50.13)可以通过replica用户访问数据库的条目信息。

host replication all 10.124.50.13/32 md5

若之前就是以网段的方式开通的话,可以不需要修改,如下:

host replication replica 10.124.50.0/24 md5

systemctl reload pgsql.service

6.原主库清空data目录,重新同步数据

pg_basebackup -U replica -h 10.124.50.14 -p 5432 -F p -X s -v -P -R -D /data/pgsql-13.11/data/

7.手动启动新从库(10.124.50.14)

/data/pgsql-13.11/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300

会有如下报错,不用管它,第一次启动会进行数据初始化,时间非常久,观察端口和日志正常,等待数据初始化结束即可

2023-12-21 16:26:24.711 CST 1623307 00000LOG: redirecting log output to logging collector process

2023-12-21 16:26:24.711 CST 1623307 00000HINT: Future log output will appear in directory "pg_log".

pg_ctl: server did not start in time

8.修改原主库(10.124.50.13)的端口,启动数据库并检查主从状态

systemctl start pgsql.service

show primary_conninfo;

  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值