教学文章
Technology Exchange
热门课程
400电话

免费咨询热线
400-090-9964

教学文章

PolarDB-X高可用与容灾(WIP)

时间:2023-11-08 来源:

在生产环境部署数据库时,往往会搭建多个副本(Replica),保证数据库集群的高可用性以及数据的持久性。传统的部署方式是一主一备,即主备间通过日志同步数据变更。但是主备复制存在先天性缺陷,以常见的MySQL半同步复制为例,一旦网络延迟超出阈值,同步就会退化到异步复制。此时如果主节点宕机,副本可能丢失已提交的数据,也就是常说的副本不一致。

为了保证副本间的强一致性,现代数据库往往采用以Paxos为代表的多数派复制协议。Paxos通常要求集群中至少存3个节点,每次写入都要获得超过半数节点的确认,即便其中1个节点宕机,集群也仍然能正常提供服务。Paxos算法能够保证副本间的强一致性,彻底解决副本不一致问题。

PolarDB-X在副本复制方面采用了X-Paxos。X-Paxos是阿里巴巴自研的Paxos协议实现,起源于AliSQL(阿里内部的 MySQL 分支)。基于朴素的Paxos实现,它在功能、性能上都做了大量优化,且经历了数十载的双十一考验,稳定可靠。

X-Paxos实现了Multi-Paxos算法,通常存在一个相对稳定的Leader节点用于处理读写请求。如果Leader节点因为某些意外情况发生宕机或超时,Follower节点就会重新发起选主投票,如果得到超过半数的选票则成为新的Leader。Logger节点只负责保存日志以及参与Paxos投票。Learner节点通常用在只读实例中,它仅仅接受主机群的变更日志,不参与Paxos投票。

此外,X-Paxos还支持动态添加删除节点、权重化选主、Leader主动回切等企业级特性,允许用户根据业务需求灵活定义部署方式。

多机房部署

基于Paxos复制协议,PolarDB-X可以部署到多个机房中,以实现机房级容灾。常见的部署方式有同城三机房、两地三中心等,其中后者主要应用在混合云部署中。由于Paxos协议的特性,通常三个机房中有一个主机房负责对外提供服务。

跨地域多活

如果业务有多活需求,出于性能考虑,通常建议在不同地域分别部署PolarDB-X实例,彼此之间通过数据同步工具相连接。数据要根据实际业务需求做合理的分区,以保证各个地域的数据不会相互冲突。

版权所有@北京神脑资讯技术有限公司(CUUG,中国UNIX用户协会) Copyright ALL Rights Reserved 京ICP备11008061号-1

CUUG旗下网站:www.cuug.com.cn www.cuug.com oracle.cuug.com bbs.cuug.com www.cuug.net

电话:010-59426307 010-59426319 邮政编码:100089

地址:北京市海淀区北清路164号28-38号院