Documentation Home
MySQL 8.0 参考手册  / 第十七章复制  / 17.1 配置复制  / 17.1.2 设置基于二进制日志文件位置的复制  /  16.1.2.3 获取复制源的二进制日志坐标

16.1.2.3 获取复制源的二进制日志坐标

要将副本配置为在正确的点开始复制过程,您需要在其二进制日志中记录源的当前坐标。

警告

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

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

要获取源的二进制日志坐标,请执行以下步骤:

  1. 通过使用命令行客户端连接到源来启动源会话,并通过执行以下语句刷新所有表和块写入FLUSH TABLES WITH READ LOCK语句:

    mysql> FLUSH TABLES WITH READ LOCK;
    警告

    使发出 FLUSH TABLES语句的客户端保持运行状态,以便读取锁定保持有效。如果退出客户端,则锁被释放。

  2. 在源上的不同会话中,使用 SHOW MASTER STATUS语句确定当前二进制日志文件名和位置:

    mysql > SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000003 | 73       | test         | manual,mysql     |
    +------------------+----------+--------------+------------------+

    File列显示日志文件的名称,该Position列显示文件中的位置。在这个例子中,二进制日志文件是mysql-bin.000003,位置是73。记录这些值。稍后在设置副本时需要它们。它们表示复制坐标,副本应在该坐标开始处理来自源的新更新。

    如果源之前在没有启用二进制日志记录的情况下运行,则 mysqldump --master-data 显示的日志文件名和位置SHOW MASTER STATUS值为。在这种情况下,稍后在指定源的日志文件和位置时需要使用的值是空字符串 ( '') 和4

您现在拥有了使副本能够在正确的位置开始从二进制日志读取以开始复制所需的信息。

下一步取决于源上是否有现有数据。选择以下选项之一: