这个pg_rewind算是啥过程啊,是polardb直接把主库的wal日志传到备库然后进行一个物理备份还原吗?
pg_rewind是一个用于同步PostgreSQL数据库集群的工具,它主要用于在主备库之间的时间线出现分叉时进行数据同步。
详细来说,pg_rewind的工作流程如下:
综上所述,pg_rewind是一个高效的数据库同步工具,它通过复制主库中已更改的数据块来同步数据,而不是简单地复制整个数据库,这样不仅可以提高同步效率,还能确保数据的一致性。在使用pg_rewind之前,需要确保满足其使用条件,以便能够顺利地进行数据同步。
参考https://github.com/digoal/blog/blob/master/201503/20150325_02.md 此回答整理自钉群“PG|POLARDB技术进阶”
不是的,pg_rewind 并不是一个简单的 WAL 日志传输和物理备份还原过程。pg_rewind 是 PostgreSQL 及其衍生数据库系统(如阿里云 PolarDB)中用于在主从集群之间进行特殊场景下的同步工具。
当一个旧的主库在发生故障转移后重新联机,并且希望它成为新主库的从库时,通常由于时间线的分歧,直接应用新的 WAL 日志是不行的,因为这样会导致数据不一致。pg_rewind 的作用是在这种情况下,通过分析主库和备库的 WAL 日志及检查点信息来找到它们分叉的时间点,然后在备库上执行逆向操作以达到与主库相同的状态,但不会丢弃分叉之后备库上的任何事务。
具体来说,pg_rewind 不是简单地将主库的 WAL 应用到备库,而是通过回滚备库上独有的事务并重放主库分叉后的 WAL 来快速恢复备库的数据一致性,使其能够安全地追加后续的 WAL 记录并继续作为从库服务。
PolarDB 作为基于 PostgreSQL 构建的关系型数据库,在保持兼容的同时可能对 pg_rewind 进行了优化或调整以适应分布式架构的需求,但基本原理类似。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云关系型数据库主要有以下几种:RDS MySQL版、RDS PostgreSQL 版、RDS SQL Server 版、PolarDB MySQL版、PolarDB PostgreSQL 版、PolarDB分布式版 。