故障转移(failover)
PG的主备复制非常稳定,一旦完成环境的搭建和配置,通常都会长时间的稳定运行。
但故障总是会发生,如何用备份系统替换发生故障的服务器非常重要。
PG可以轻易的完成故障转移和主备切换,实际上,我们只需要使用pg_ctl命令告诉备节点提升自己为主节点即可。
pg_ctl -D data_dir promote
在PG12等新版本中,也可以通过函数实现
postgres=# select pg_promote();
pg_promote ( wait boolean DEFAULT true, wait_seconds integer DEFAULT 60
) → boolean
第一个参数wait,默认为true;等待备节点提升为主节点之后再返回;设置为flase后,会直接发送一个SIGUSR1信号后返回。
第二个参数wait_seconds是等待时间,默认60秒;
- 命令执行以后,备节点会与主节点断开连接。
- 备节点会提升自己为主节点。(备节点需要配置正确参数,比如最大连接数)
- 原来连接到备节点的只读连接会直接拥有读写权限,而不需要断开重连。
Timeline
备节点提升为主节点后,timeline会随之增加。
如果刚刚启动的PG主节点timeline为1,与该主节点同步的备节点此时的timeline同样为1
如果此时备节点独自提升为主节点,则timeline将变为2.
timeline对于数据库的即时恢复(PITR)非常重要。
考虑到这种场景,我们在凌晨3点对数据库进行了基础备份。凌晨4点备节点提升为主节点,在下午3点的时候系统崩溃,此时我们想要恢复到下午2点这个时刻。
此时需要重新执行在基础备份之后创建的事务日志,并跟踪我们所需服务器的 WAL 流,因为这两个节点在凌晨4点开始开始了不同的分支。
timeline也会体现再WAL日志的命名上
比如,原来的文件名为 0000000100000000000000F5
如果timeline变成2,则文件名称0000000200000000000000F5
最后修改时间:2022-02-08 09:55:18
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




