17.1.2.4 获取二进制日志同步点的起始坐标

未匹配的标注

为了配置从节点能在正确的位置开始同步过程,你需要记录主节点的二进制日志中的当前坐标。

警告
此过程使用 FLUSH TABLES WITH READ LOCK ,它会阻止 InnoDB 表的 COMMIT 操作。

此段需要重新翻译
如果您计划关闭主节点以创建数据快照,则可以选择跳过此过程,转而将二进制日志索引文件的副本与数据快照一起存储。在这种情况下,主节点在重新启动时会创建一个新的二进制日志文件。因此,从节点必须开始复制过程的主节点二进制日志坐标是该新文件的开头,即在复制的二进制日志索引文件中列出的文件之后源上的下一个二进制日志文件。

要获取主节点的二进制日志坐标,请按照以下步骤进行:

  1. 在主节点执行 FLUSH TABLES WITH READ LOCK 命令来刷新所有表并添加一个写锁来阻止之后写入行为。

    mysql> FLUSH TABLES WITH READ LOCK;

    警告
    为了保持 FLUSH TABLES 加的锁一直存在,请不要关闭当前的会话连接. 如果此会话被关闭则锁会被当即释放.

  2. 在主节点启动一个新的会话,使用 SHOW MASTER STATUS 命令确定当前二进制日志的文件名和位置:

    mysql> SHOW MASTER STATUS\G
    *************************** 1\. row ***************************
                 File: mysql-bin.000003
             Position: 73
         Binlog_Do_DB: test
     Binlog_Ignore_DB: manual, mysql
    Executed_Gtid_Set: 3E11FA47-71CA-11E1-9E33-C80AA9429562:1-5
    1 row in set (0.00 sec)

    运行结果中 File 列显示日志文件的名称,Position 列显示日志文件的坐标。在此示例中,二进制日志文件为 mysql-bin.000003,位置为73。让我们记录这些值,在设置从节点时需要它们。它们记录了副本应该从哪个「复制坐标」开始同步来自主节点的新数据。

    如果主节点在之前运行时未启用二进制日志记录,则 SHOW MASTER STATUS 或  mysqldump --master-data 显示的日志文件名和位置值为空。在这种情况下,稍后在从节点上指定主节点的二进制日志文件和「复制坐标」时使用空字符串''4 来作为默认值。

现在,您已经掌握了让从节点能够从主节点二进制日志的正确位置开始同步所需的所有信息

下一步的动作取决于主节点是否已经存在一些数据

  • 如果你有一些已有数据需要通过主从复制的结构去同步,那么请保证之前的会话继续运行不要断开,以便保持写锁不被释放。这可以防止进行任何进一步的更改,以便从节点继续与主节点保持同步。并按照 第 17.1.2.5 章, 「选择数据快照方法」 继续接下来的步骤。

  • 如果你打算让新的主节点和从节点组合,则可以退出之前的会话以释放读取锁。并按照 第 17.1.2.6.1 节, 「设置新源和副本的复制」 继续接下来的步骤。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/reference-manua...

译文地址:https://learnku.com/docs/reference-manua...

上一篇 下一篇
贡献者:2
讨论数量: 0
发起讨论 只看当前版本


暂无话题~