PXC技术要点解析(2/2)

287 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情

前文介绍了pxc的特点及基于认证的复制技术,本文继续介绍pxc的技术要点及使用注意事项。

2. 集群的高可用机制

单个节点发生故障,由集群其他节点承载业务。 发生网络故障时,依赖一种法定多数算法进行选主,这里引入组件(components)主组件(Primary Component) 概念。

集群可能由于网络故障而分裂成多个组件。组件是一组相互连接的节点,但不连接到形成其他组件的节点。 在任何情况下,只有一个组件可以继续修改数据库状态以避免历史分歧,该组件称为主组件。 正常情况下,整个PXC集群就是一个主组件。当集群发生网络分区时,Galera Cluster 调用一种特殊的法定多数(Quorum)算法来选择一个组件作为 Primary Component,这保证了集群中的主组件永远不会超过一个。

所在主组件的集群节点的状态为primary,在非主组件的集群节点为non-primary。

image.png

官网参考

使用PXC的一些限制和注意事项

  1. 只支持innodb引擎,对myisam包括系统表的支持限于ddl,dml不支持
  2. 所有表需包括含主键,因需保证表记录在所有节点一致,DELETE语句直接不支持无主键的表
  3. 事务大小受限于wsrep_max_ws_rows和 wsrep_max_ws_size参数,LOAD DATA INFILE每10000行提交一次
  4. 在提交阶段有可能回滚
  5. 基于集群级别的乐观并发控制,多主写同一行的并发事务,最终只有一个节点可提交成功,其他节点将中止,并返回deadlock错误码
  6. 直接执行DDL语句,可能导致杀死表对象当前尚未提交的DML事务,卡住表对象DML,进而卡住之后所有表的DML,造成灾难级的事故,所以需要特别注意,一般推荐使用pt-osc等工具进行表结构修改。

(全文完)
备注:本文档主要参考percona和galera官网,转载请注明出处。