在阅读了 PgPool 的文档后,我对哪个选项最适合我的用例感到困惑。我需要一个主数据库实例,它可以为查询提供服务,以及用于灾难恢复场景的主数据库实例的 1 个或多个副本(备用)。 对我来说非常重要的是,所有 成功提交到主节点的事务保证最终被复制到副本,这样当发生故障转移时,副本数据库实例拥有所有事务,包括最新应用到它。
在异步复制方面,我在 PgPool 文档中没有看到任何提及是否是这种情况,但是,它确实提到了一些潜在的数据丢失发生,这对我来说太模糊了,无法得出任何结论。
为了防止这种数据丢失,文档建议使用同步流复制,在主节点提交事务之前,确保所有副本也应用了该更改。因此,这种方法比异步方法慢,但如果没有数据丢失,它可能是可行的。
同步复制是允许我实现用例的唯一方法还是异步复制也能做到这一点?另外,异步复制中潜在的数据丢失是什么构成的?