#### 17.1.2.4 获取复制源二进制日志坐标

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

警告

此过程使用[`带读锁的刷新表`](flush.html#flush-tables-with-read-lock), 哪个块[`犯罪`](commit.html)操作为[`InnoDB`](innodb-storage-engine.html)表。

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

要获取源二进制日志坐标，请执行以下步骤：

1.  通过使用命令行客户端连接到源在源上启动会话，并通过执行刷新所有表并阻止写入语句[`带读锁的刷新表`](flush.html#flush-tables-with-read-lock)陈述：

    ```
    mysql> FLUSH TABLES WITH READ LOCK;
    ```

    警告

    离开您发出的客户[`同花顺表`](flush.html#flush-tables)语句运行以使读锁保持有效。如果你退出客户端，锁就会被释放。

2.  在源的不同会话中，使用[`显示主状态`](show-master-status.html)判断当前二进制日志文件名和位置的语句：

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

    这`文件`列显示日志文件的名称和`位置`列显示文件中的位置。在本例中，二进制日志文件是`mysql邮箱。000003`位置是73。记录这些值。稍后在设置复制副本时需要它们。它们表示复制副本开始处理来自源的新更新时的复制坐标。

    如果源之前已在禁用二进制日志记录的情况下运行，则日志文件名和位置值将显示为[`显示主机状态`](show-master-status.html)或[**mysqldump——主数据**](mysqldump.html)都是空的。在这种情况下，以后指定源的二进制日志文件和位置时需要使用的值是空字符串(`''`)及`4.`.

    现在，您已经获得了使复制副本能够在正确的位置开始从源的二进制日志读取以开始复制所需的信息。

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

-   如果在开始复制之前，现有数据需要与复制副本同步，请让客户端保持运行，以便锁保持在原位。这将防止进行任何进一步的更改，以便复制到副本的数据与源同步。继续[第17.1.2.5节，“选择数据快照的方法”](replication-snapshot-method.html).

-   如果要设置新的源和副本组合，可以退出第一个会话以释放读锁。看见[第17.1.2.6.1节，“使用新源和副本设置复制”](replication-setup-replicas.html#replication-howto-newservers)关于如何继续。
