持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情
前文介绍了pxc的特点及基于认证的复制技术,本文继续介绍pxc的技术要点及使用注意事项。
2. 集群的高可用机制
单个节点发生故障,由集群其他节点承载业务。 发生网络故障时,依赖一种法定多数算法进行选主,这里引入组件(components) 与主组件(Primary Component) 概念。
集群可能由于网络故障而分裂成多个组件。组件是一组相互连接的节点,但不连接到形成其他组件的节点。 在任何情况下,只有一个组件可以继续修改数据库状态以避免历史分歧,该组件称为主组件。 正常情况下,整个PXC集群就是一个主组件。当集群发生网络分区时,Galera Cluster 调用一种特殊的法定多数(Quorum)算法来选择一个组件作为 Primary Component,这保证了集群中的主组件永远不会超过一个。
所在主组件的集群节点的状态为primary,在非主组件的集群节点为non-primary。
使用PXC的一些限制和注意事项
- 只支持innodb引擎,对myisam包括系统表的支持限于ddl,dml不支持
- 所有表需包括含主键,因需保证表记录在所有节点一致,DELETE语句直接不支持无主键的表
- 事务大小受限于wsrep_max_ws_rows和 wsrep_max_ws_size参数,LOAD DATA INFILE每10000行提交一次
- 在提交阶段有可能回滚
- 基于集群级别的乐观并发控制,多主写同一行的并发事务,最终只有一个节点可提交成功,其他节点将中止,并返回deadlock错误码
- 直接执行DDL语句,可能导致杀死表对象当前尚未提交的DML事务,卡住表对象DML,进而卡住之后所有表的DML,造成灾难级的事故,所以需要特别注意,一般推荐使用pt-osc等工具进行表结构修改。
(全文完)
备注:本文档主要参考percona和galera官网,转载请注明出处。