Percona XtraDB Cluster多主复制(PXC 5.7)

简介:

Percona XtraDB Cluster(下称PXC)集群是一种支持多主方式的集群模式,也就是说多个不同的节点均可提供读写功能,并且确保写入对群集中的所有节点都是一致的。这极大的解决了单点IO性能瓶颈,以及单点宕机故障。本文描述的是PXC多主复制的逻辑结构,供大家参考。

一、什么是多主复制

多主复制
  多主复制意味着您可以可以在任何节点写入,并确保写入对群集中的所有节点都是一致的。
  这与常规MySQL复制不同,在这种情况下,您必须将写入操作应用到Master,以确保它将被同步。
  使用多主复制时,任何写操作都会在所有节点上提交,或者根本不提交。

二、多主复制示意图

下图显示了它是如何工作的两个节点,但相同的逻辑适用于任意数目的PXC群集中。

0_4092686053669594

  图片来源: Galera文档 - 如何进行基于认证的复制工作

三、多主复制机制

所有的查询都在节点本地执行,只有COMMIT需要特殊的处理。当COMMIT发出后,事务必须通过所有节点上的认证。
如果没有通过,您将收到ERROR作为该查询的答复。之后,事务被应用在本地节点上。

响应时间COMMIT包括以下内容:
  网络往返时间
  认证时间
  本地Apply

注意

  在远程节点上应用事务不会影响COMMIT响应时间,因为它发生在认证响应后的后台。

这种架构有两个重要的后果:

  可以并行同时使用多个appliers。这使真正的并行复制成为可能。从机slave可以使用wsrep_slave_threads变量配置许多并行线程。

  slave从机可能会有一小段时间不同步。发生这种情况是因为主节点可能比从站更快地应用事件。如果你从slave读取,可以从图中看到,你可能读取尚未改变的数据。

  但是,这个行为可以通过设置变量wsrep_causal_reads=ON来改变。在这种情况下,从节点上的读操作将一直等到事件被应用(这显然会增加读操作的响应时间)。从机和主机之间的差距就是为什么这个复制被称为虚拟同步复制,而不是真正的同步复制。

这里描述的行为COMMIT也蕴含着一个严重的含义。如果您将写入事务运行到两个不同的节点,则群集将使用乐观锁定模型。这意味着一个事务不会在个别查询期间检查可能的锁定冲突,而是在COMMIT阶段,您可能会得到ERROR回应COMMIT。

之所以提到这一点,是因为它可能会遇到与InnoDB不兼容的问题。对于InnoDB,死锁DEADLOCK和锁超时(LOCK TIME)错误误通常发生在针对特定查询,而不是在COMMIT阶段。在COMMIT之后检查错误代码是一个很好的做法,但仍有许多应用程序不这样做。

如果您计划使用多主复制并在多个节点上运行写入事务,则可能需要确保处理COMMIT查询上的响应。

目录
相关文章
|
自然语言处理 编译器 Linux
【Latex】texstudio使用和ACL论文模板初步解读
LaTeX是一类用于编辑和排版的软件,用于生成PDF文档。 LaTeX编辑和排版的核心思想在于,通过\section和\paragraph等语句,规定了每一句话在文章中所从属的层次,从而极大方便了对各个层次批量处理。 LaTeX在使用体验方
2405 0
【Latex】texstudio使用和ACL论文模板初步解读
|
5月前
|
存储 监控 算法
淘宝买家秀 API开发实录Python(2025)
本文讲述了作者在电商开发领域,尤其是对接淘宝买家秀 API 接口过程中所经历的挑战与收获。从申请接入、签名验证、频率限制到数据处理和实时监控,作者分享了多个实战经验与代码示例,帮助开发者更高效地获取和处理买家秀数据,提升开发效率。
|
7月前
|
JSON API 数据格式
wxid加好友生成二维码,微信号wxid转换器,可直接添加好友【仅供学习参考】
本示例展示了一个模拟微信二维码生成及API交互的模块调用流程,仅供学习参考。
|
11月前
|
机器学习/深度学习 计算机视觉
YOLOv11改进策略【注意力机制篇】| Large Separable Kernel Attention (LSKA) 大核可分离卷积注意力 二次创新C2PSA、C3k2
YOLOv11改进策略【注意力机制篇】| Large Separable Kernel Attention (LSKA) 大核可分离卷积注意力 二次创新C2PSA、C3k2
832 2
YOLOv11改进策略【注意力机制篇】| Large Separable Kernel Attention (LSKA) 大核可分离卷积注意力 二次创新C2PSA、C3k2
|
Android开发
android自定义混淆字典及生成混淆字典文件
android自定义混淆字典及生成混淆字典文件
1140 0
android自定义混淆字典及生成混淆字典文件
|
安全 容器 iOS开发
|
JavaScript 编译器
成功解决:Module build failed: Error: Vue packages version mismatch
这篇文章记录了解决Vue项目中遇到的"Module build failed: Error: Vue packages version mismatch"错误的步骤,原因是项目中Vue依赖的版本不一致,解决方法是删除`node_modules`后重新安装指定版本的Vue和`vue-template-compiler`,确保版本匹配,最终成功运行项目。
成功解决:Module build failed: Error: Vue packages version mismatch
|
网络安全 数据安全/隐私保护 Windows
[笔记]Windows Cyswin ssh配置及远程控制
[笔记]Windows Cyswin ssh配置及远程控制
318 0
|
SQL 关系型数据库 MySQL
MySQL----配置双主双从
本文档详细介绍了如何在四台服务器上配置MySQL的双主双从架构。首先,通过关闭防火墙和SELinux确保网络通信畅通无阻。接着,设置各服务器的主机名和本地Host,确保名称解析正确。然后,通过YUM安装MySQL并修改初始密码。接下来,逐步配置四个节点(master01、master02、slave01、slave02),包括修改配置文件、创建用户和授权等步骤,实现主从复制。最后,通过SQL命令验证主从同步是否成功。