postgresql , 流复制 , 同步流复制 , 任意副本
postgresql很多年前就开始支持同步流复制,支持配置多个standby,当sync node异常时,potention standby节点会自动变成sync node。从而提供0丢失的高可用。
但是此前如果要配置超过2个副本的高可用时,需要打一个patch。
10.0将这个patch合并到了内核中,支持配置任意副本,即,所有节点都可能随时成为sync node。
比如有3个standby,配置为2时,则3个中任意2个收到事务结束的wal后,才会释放主库会话等待队列,返回用户。
这个特性已经达到了金融级的要求,例如两地三中心,可以保证有2个副本。
当然如果你的要求更高,可以配置5个甚至更多standby,那么即使挂掉3个备库,也不影响使用。
详见
这个patch的讨论,详见邮件组,本文末尾url。
postgresql社区的作风非常严谨,一个patch可能在邮件组中讨论几个月甚至几年,根据大家的意见反复的修正,patch合并到master已经非常成熟,所以postgresql的稳定性也是远近闻名的。
<a href="https://commitfest.postgresql.org/12/826/">https://commitfest.postgresql.org/12/826/</a>
<a href="https://www.postgresql.org/message-id/flat/cad21aoaaci9nec_ecm+vahm+mma6nyh=kqs3kb3np+mbos_gzg@mail.gmail.com#cad21aoaaci9nec_ecm+vahm+mma6nyh=kqs3kb3np+mbos_gzg@mail.gmail.com">https://www.postgresql.org/message-id/flat/cad21aoaaci9nec_ecm+vahm+mma6nyh=kqs3kb3np+mbos_gzg@mail.gmail.com#cad21aoaaci9nec_ecm+vahm+mma6nyh=kqs3kb3np+mbos_gzg@mail.gmail.com</a>