本文共 2033 字,大约阅读时间需要 6 分钟。
MariaDB Galera Cluster与PXC集群工作原理及架构分析
MariaDB Galera Cluster与PXC集群在原理上具有高度一致性,两者均采用WSrep(Write Set Replication)机制实现数据同步。以下将从基础原理、集群架构、节点状态及优缺点等方面进行详细分析。
Galera Cluster/PXC集群工作原理
在Galera Cluster和PXC集群中,所有的DML更新操作都需要经过严格的验证机制。具体流程如下:
提交事务:客户端提交事务时,server端的本地进程会立即处理请求并返回OK。 事务验证:在提交事务前,wsrep API会广播事务到集群的所有节点,验证该事务是否能在所有节点上执行。 全局唯一标识:验证通过后,集群会生成唯一的GTID(全局事务ID),并将其发送至所有节点。 执行事务:每个节点接收到GTID后,会验证该事务的合法性。一旦验证通过,节点会执行commit_cd动作,将事务提交到本地数据库;若验证不通过,则执行rollback_cd回滚事务。 数据一致性:通过这种方式,集群能够确保所有节点的数据一致性,避免数据孤立。 Galera Cluster和PXC集群均采用乐观锁机制,这意味着所有事务都需要在集群内部广播验证,验证不通过时才会回滚。这种机制虽然保证了数据一致性,但也对性能产生了较大影响,因为所有节点都需要参与事务处理。
PXC/Galera Cluster集群架构
PXC/Galera Cluster集群架构主要包括以下几个关键层次:
Group Communication层:负责统一全局数据同步策略和集群内部事务排序,用于生成唯一的GTID。 Replication层:包括applier和slave queue,负责完成数据同步。该层的效率直接决定了集群的写入能力。 节点状态管理:通过WSrep机制实现集群内节点间的通信与状态同步。 节点状态及状态变化因素
在Galera Cluster/PXC集群中,节点状态会根据集群运行情况发生动态变化,常见状态包括:
- OPEN:节点启动成功,正在尝试连接集群。
- PRIMARY:节点已成为集群的主节点,在新节点加入时负责数据同步。
- JOINER:节点正在接收SST全量数据同步。
- JOINED:节点完成了SST全量同步,但尚未完全追赶集群进度。
- SYNCED:节点已完成数据同步,且与集群进度保持一致。
- DONOR:节点正在为新节点提供全量数据同步,暂时无法提供读写服务。
节点状态的变化主要由以下因素引起:
- 新节点加入集群
- 节点故障恢复,重新加入集群
- 集群中其他节点的同步失效
PXC/Galera Cluster集群优缺点
优点:
高可用性:集群节点功能平等,提供负载和冗余,避免单点故障。 强一致性:所有节点同步修改数据,读写操作无延迟,确保数据一致性。 易扩展:新节点加入集群自动完成SST全量同步和IST增量同步。 缺点:
性能限制:任何更新事务都需要全局验证,集群性能受限于性能最差的节点。 锁冲突:多点并发写入时,由于所有节点都需要验证锁,可能导致严重的锁死问题。 节点状态转换:新节点或延迟较大的节点重新加入时,需要进行全量数据同步(SST),此时该节点无法提供读写服务。 单个节点或所有节点停机情况分析
单个节点停机:
- 节点停机后,重新启动并重新加入集群,通过IST增量同步数据,保持集群一致性。
- 若停机时间过长,部分数据无法缓存,需进行SST全量同步。
所有节点停机:
- 需采用滚动重启的方式:逐个节点关闭并修复,确保集群始终有至少一个活跃节点。
- 关闭所有节点时,需记录最后一个关闭节点的GTID,启动时优先启动该节点。
避免数据丢失:
- 保持集群中至少有一个活跃节点,避免所有节点同时停机。
- 在节点故障恢复时,暂停所有写操作,等待数据一致后再恢复。
常见问题汇总
主节点写入过大:
- 配置
wrep_slave_threads为CPU核数或1.5倍,可有效减少apply_cd时间。
脑裂问题:
- 出现“unknown command”错误时,使用
SET GLOBAL wsrep_provider_options="pc.ignore_sb=true";配置,跳过少数节点的错误。
并发写操作:
- 避免多个节点同时进行同一行数据的更新操作,可能导致锁死问题。
DDL全局锁:
- 使用
pt-online-schema-change工具进行在线DDL操作。
引擎兼容性:
- PXC集群仅支持InnoDB引擎,且表结构必须包含主键,否则可能导致数据不一致。
节点状态转换期间的写操作:
- 在新节点或故障节点恢复加入集群时,需暂停所有写操作,避免因锁冲突导致数据不一致。
通过以上分析,可以更好地理解Galera Cluster和PXC集群的工作原理及其在实际应用中的优缺点。对于集群管理和故障恢复,掌握相关知识至关重要。
转载地址:http://ezafk.baihongyu.com/