美文网首页
MySQL系列~GTID集合

MySQL系列~GTID集合

作者: 开心的蛋黄派 | 来源:发表于2024-07-21 09:20 被阅读0次
  1. GTID是什么
    GTID(Global Transaction Identifier,全局事务标识符)是一个在MySQL复制环境中用于唯一标识事务的标识符。它由两部分组成:server_uuidtransaction_idserver_uuid是数据库实例在启动时自动生成的唯一标识,保存在auto.cnf文件中。transaction_id是事务执行的序列号。
  2. 什么时候产生GTID值
    GTID是在事务提交时生成的。当事务执行到COMMIT阶段,并且GTID模式(gtid_mode)设置为ON或ON_PERMISSIVE时,MySQL将生成一个新的GTID,并将其记录到二进制日志(binlog)中。
  3. GTID的优势
    • 简化复制流程:在进行主从复制时,使用GTID无需手动寻找binlog的位点信息。通过设置auto_position=1,从服务器可以自动定位到主服务器上的位置,从而简化复制流程。
    • 增强数据一致性:GTID确保每个事务在整个复制环境中只被执行一次,避免了重复执行或遗漏执行事务的风险,从而维护了数据的一致性。
  4. binlog记录
    每个binlog文件的开头都包含了之前所有已提交事务的GTID集合。这使得从服务器能够轻松地同步主服务器的状态,因为从服务器可以通过GTID来识别并应用缺失的事务。
  5. GTID相关的变量
    • executed_gtid_set:表示已经在主服务器上执行过的GTID集合。
      • RESET MASTER会清空executed_gtid_set和purged_gtid_set的值
      • 只有该项为空的时候才能执行SET PURGE_GTID_SET
      • 该变量不能手动进行设置,所以需要设置SET @@global.gtid_purged
      • executed_gtid_set包含purged_gtid_set中的GTID,即已执行的GTID集合包含了已被清理的GTID集合。
    • purged_gtid_set:表示已经被清理(删除)的GTID集合。这些GTID对应的事务已经被从binlog中删除,并且不再需要被复制到从服务器。
  6. 如何跳过复制错误
    当从服务器在复制过程中遇到错误时,可以通过以下步骤跳过该错误:
    • stop slave。
      SET @@SESSION.GTID_NEXT='要跳过的GTID'
      -BEGIN; COMMIT`。
    • SET @@SESSION.GTID_NEXT='AUTOMATIC'`
    • START SLAVE`。
  7. 搭建新从库
    • 使用RESET MASTER命令删除所有二进制日志文件,并重置gtid_executed集合。这将清除主服务器上的所有复制历史。
    • 在从服务器上设置正确的已执行GTID集合(通过SET @@global.gtid_purged = '你的GTID集合')。这将确保从服务器与主服务器具有一致的复制状态。

相关文章

网友评论

      本文标题:MySQL系列~GTID集合

      本文链接:https://www.haomeiwen.com/subject/tsvmfjtx.html