暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[ACDU 翻译] MySQL 17.1.4.1 复制模式概念

原创 由迪 2022-08-15
321

为了能够安全地配置在线服务器的复制模式,了解复制的一些关键概念非常重要。本节解释了这些概念,是尝试修改在线服务器的复制模式之前的必备阅读材料。

MySQL 中可用的复制模式依赖于不同的技术来识别记录的事务。复制使用的事务类型如下:

  • GTID 事务由格式为 的全局事务标识符 (GTID) 标识UUID:NUMBER。日志中的每个 GTID 事务总是以 Gtid_log_event. GTID 事务可以使用 GTID 或使用文件名和位置来处理。
  • 匿名事务没有分配 GTID,MySQL 确保日志中的每个匿名事务前面都有一个Anonymous_gtid_log_event. 在以前的版本中,匿名交易之前没有任何特定事件。匿名事务只能使用文件名和位置来处理。

使用 GTID 时,您可以利用 GTID 自动定位和自动故障转移,以及使用 WAIT_FOR_EXECUTED_GTID_SET()session_track_gtids和监视使用性能模式表的复制事务。

从运行先前版本 MySQL 的源接收到的中继日志中的事务可能根本没有任何特定事件,但是在被重放并记录在副本的二进制日志中之后,它们前面有一个 Anonymous_gtid_log_event.

在线配置复制模式的能力意味着gtid_modeenforce_gtid_consistency 变量现在都是动态的,并且可以由具有足以设置全局系统变量的权限的帐户从顶级语句中设置。请参见 第 5.1.9.1 节,“系统变量权限”。在 MySQL 5.6 和更早版本中,这两个变量只能在服务器启动时使用适当的选项进行配置,这意味着对复制模式的更改需要重新启动服务器。在所有版本 gtid_mode中都可以设置为 ONOFF,这对应于 GTID 是否用于识别事务。什么时候gtid_mode=ON无法复制匿名事务,并且 gtid_mode=OFF只能复制匿名事务。那时 gtid_mode=OFF_PERMISSIVE事务是匿名的, 同时允许复制事务是 GTID 或匿名事务。届时 , 事务使用 GTID,同时允许复制事务为 GTID 或匿名事务。这意味着可以有一个复制拓扑,其中包含使用匿名和 GTID 事务的服务器。例如,带有 的源 可以复制到带有 的副本 。的有效值如下所示,并按以下顺序排列: gtid_mode=ON_PERMISSIVEgtid_mode=ONgtid_mode=ON_PERMISSIVEgtid_mode

  • OFF
  • OFF_PERMISSIVE
  • ON_PERMISSIVE
  • ON

需要注意的是, gtid_mode根据上面的顺序,一次只能改变一个步骤的状态。例如,如果 gtid_mode当前设置为 OFF_PERMISSIVE,则可以更改为 OFFON_PERMISSIVE但不能更改为ON。这是为了确保服务器正确处理从匿名交易到在线GTID交易的过程。gtid_mode=ON当您在和 之间切换时 gtid_mode=OFF,GTID 状态(即 的值 gtid_executed)是持久的。这样可以确保始终保留服务器已应用的 GTID 集,而不管 gtid_mode.

无论当前选择什么,与 GTID 相关的字段都会显示正确的信息 gtid_modegtid_executed这意味着显示 GTID 集的字段, 例如 Performance Schema 表中 的 gtid_purged, 以及(或 MySQL 8.0.22 之前 的)的 GTID 相关结果,现在在没有 GTID 时返回空字符串。显示单个 GTID 的字段(例如 性能模式 表中的字段)现在会在未使用 GTID 事务时显示。 RECEIVED_TRANSACTION_SETreplication_connection_statusSHOW REPLICA STATUSSHOW SLAVE STATUSCURRENT_TRANSACTIONreplication_applier_status_by_workerANONYMOUS

从源复制 using gtid_mode=ON提供了使用 GTID 自动定位的能力,使用语句的配置 SOURCE_AUTO_POSITIONCHANGE REPLICATION SOURCE TO 来自 MySQL 8.0.23)或语句的 MASTER_AUTO_POSITION选项 CHANGE MASTER TO(在 MySQL 8.0.23 之前)。正在使用的复制拓扑会影响是否可以启用自动定位,因为此功能依赖于 GTID,并且与匿名事务不兼容。强烈建议在启用自动定位之前确保拓扑中没有剩余的匿名事务,请参阅 第 17.1.4.2 节,“在线启用 GTID 事务”

源和副本的有效组合 gtid_mode和自动定位如下表所示,其中源gtid_mode显示在水平位置,副本显示 gtid_mode在垂直位置。每个条目的含义如下:

  • Y: gtid_mode源和副本的兼容
  • N: gtid_mode源和副本的不兼容
  • *:自动定位可与此组合一起使用

表 17.1 源和副本 gtid_mode 的有效组合

gtid_mode 资源OFF 资源OFF_PERMISSIVE 资源ON_PERMISSIVE 资源ON
复制品OFF 是的 是的 ñ ñ
复制品OFF_PERMISSIVE 是的 是的 是的 是*
复制品ON_PERMISSIVE 是的 是的 是的 是*
复制品ON ñ ñ 是的 是*

当前选择的gtid_mode 也影响gtid_next 变量。下表显示了服务器在 和 的不同值下的gtid_mode 行为gtid_next。每个条目的含义如下:

  • ANONYMOUS:生成匿名交易。
  • Error: 产生错误,执行失败SET GTID_NEXT
  • UUID:NUMBER:生成具有指定 UUID:NUMBER 的 GTID。
  • New GTID:使用自动生成的数字生成 GTID。

表 17.2 gtid_mode 和 gtid_next 的有效组合

gtid_next自动的二进制登录 gtid_next自动的二进制注销 gtid_next匿名的 gtid_nextUUID:号码
gtid_mode OFF 匿名的 匿名的 匿名的 错误
gtid_mode OFF_PERMISSIVE 匿名的 匿名的 匿名的 UUID:号码
gtid_mode ON_PERMISSIVE 新的 GTID 匿名的 匿名的 UUID:号码
gtid_mode ON 新的 GTID 匿名的 错误 UUID:号码

当二进制日志关闭并 gtid_next设置为 时 AUTOMATIC,则不会生成 GTID。这与以前版本的行为一致。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论