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
posted @ 2026-01-05 16:28  大胖熊哈  阅读(3)  评论(0)    收藏  举报