15-Master-Slave_Switch
Master-Slave_Switch
主从切换的配置文件简单而言就两个,
- standby.signal:这个是从节点开启备份
- postgresql.auto.conf:指定主节点的信息
停服切换
切换的话,就是主节点追加上述配置,从节点删除以上配置。
先停止主库
原来的主节点
添加 standby.signal空文件即可
修改 postgresql.auto.conf
# 主ip是100,从是101.现在切换主是101.从是100
primary_conninfo = 'user=repuser password=RepPass123! host=192.168.1.101 port=5432 sslmode=prefer sslcompression=0 gssencmode=disable krbsrvname=postgres target_session_attrs=any'
原来的从节点
删除standby.signal
rm -rf standby.signal
修改postgresql.auto.conf,删除所有的内容。
之后启动各个节点(先启动主库),我们的主从节点就进行了切换。
不停服切换
# 1. 在原从库提升为主库
sudo -u postgres /usr/pgsql/bin/pg_ctl promote -D /var/lib/pgsql/data
# 2. 在原主库重新配置为从库
sudo systemctl stop postgresql
# 创建必要的配置文件
sudo -u postgres cat > /var/lib/pgsql/data/postgresql.auto.conf << EOF
primary_conninfo = 'user=repuser password=RepPass123! host=192.168.1.101 port=5432'
EOF
sudo -u postgres touch /var/lib/pgsql/data/standby.signal
# 或者使用更简单的命令
sudo -u postgres pg_rewind \
--target-pgdata=/var/lib/pgsql/data \
--source-server="host=新主库IP user=postgres"
# 启动从库
sudo systemctl start postgresql-14
示例
现在有两台机子
| 名称 | 身份 | Ip |
|---|---|---|
| p1 | 主节点 | 192.168.1.10 |
| p2 | 从节点 | 192.168.1.20 |
模拟故障。直接对p1进行关机。
这时候我们需要将p2提升为主节点
# 切换到postgres用户
su - postgres
# 提升为主节点
pg_ctl promote -D /var/lib/pgsql/data
然后p1电脑恢复正常,需要接入服务称为从节点
# 切换用户
su - postgres
# 关闭服务
pg_ctl stop -D /var/lib/pgsql/data
# 切换到从节点
sudo -u postgres pg_rewind \
--target-pgdata=/var/lib/pgsql/data \
--source-server="host=192.168.1.20 user=postgres"
pg_ctl start -D /var/lib/pgsql/data

浙公网安备 33010602011771号