手工主备切换

对于 Oracle 数据库的 DBA 来说,切换 Oracle 数据库主备库之间的角色过程叫作“switchover”,Oracle 提供了相应的“switchover”的一些较为复杂的命令和过程,对于 Postgresql 来说,切换操作的步骤毕竟简单。只需要以下几步操作:

  1. 停主库,再停备库

  2. 删除备库的标志文件 standby.signal(12 之前的版本则是 recovery.conf),给新主库新增标志文件,配置好连接新主库的连接参数。

  3. 先起备库,再起新主库

具体操作流程就不演示了,比较简单,给各位读者留个作业练习练习。

手工故障转移

通过故障被称为“Failover”,如果主库发生故障时,可以激活备库作为主库提供服务。等主库恢复正常后,使用

pg_rewind“回滚”到新主库激活时的状态。

使用pg_rewind 命令必须要求主库把 wal_log_hints 设置为 ON 或者打开 checksum。

让我们来实践一下哎,先把主库10.20.0.5 关闭。

备库 10.20.0.6: pg_ctl promote

原主库:

pg_rewind -D $PGDATA --source-server='host=10.20.0.6 user=postgres password=postgres'

touch $PGDATA/standby.signal

在 postgresql.conf 新增

primary_conninfo = 'user=postgres password=postgres channel_binding=prefer host=10.20.0.6 port=5432 sslmode=disable sslcompression=1'

小坑:因为笔者这里是使用容器部署,把 postgres 关闭之后容器就关闭了。所以我们需要再配置一个命令让容器不退出。command: sleep infinity

配置完成之后再启动原主库就会发现已经是从库了。

我们需要先理解和实操下手工操作,等后面学习高可用部署的时候就清楚这个流程了。我们应用一般就配置一个数据库地址,那当主库挂了切换从库,应用岂不是还要改了之后再重启,那怎么办呢?我们留着等下节课再说。