16.1.2.3 获取复制源的二进制日志坐标
要将副本配置为在正确的点开始复制过程,您需要在其二进制日志中记下源的当前坐标。
如果计划关闭源以创建数据快照,则可以选择跳过此过程,而是将二进制日志索引文件的副本与数据快照一起存储。在这种情况下,源将在重新启动时创建一个新的二进制日志文件。因此,副本必须开始复制过程的源二进制日志坐标就是该新文件的开始,它是源上下一个二进制日志文件,紧随复制的二进制日志索引文件中列出的文件之后。
要获取源的二进制日志坐标,请按照下列步骤操作:
- 通过使用命令行 Client 端连接到源上来启动会话,并通过执行带读取锁的平桌子语句刷新所有 table 并阻止写入语句:
mysql> FLUSH TABLES WITH READ LOCK;
Warning
使您发出FLUSH TABLES语句的 Client 端运行,以便读锁保持有效。如果退出 Client 端,则锁定将被释放。
- 在源上的另一个会话中,使用显示主状态语句确定当前二进制日志文件的名称和位置:
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.记录这些值。稍后在设置副本时需要它们。它们代 table 复制坐标,副本应从该坐标开始处理源中的新更新。
如果源以前已在未启用二进制日志记录的情况下运行,则显示主状态或mysqldump --master-data显示的日志文件名和位置值将为空。在这种情况下,以后指定源日志文件和位置时需要使用的值为空字符串(''
)和4
。
现在,您具有使副本能够从正确位置的二进制日志开始读取以开始复制的信息。
下一步取决于源上是否有现有数据。选择以下选项之一:
-
如果您有需要在开始复制之前与副本同步的现有数据,请使 Client 端保持运行状态,以便将锁保留在适当的位置。这样可以防止进行任何进一步的更改,从而使复制到副本的数据与源同步。continue 进行第 16.1.2.4 节,“选择数据快照的方法”。
-
如果要设置新的复制拓扑,则可以退出第一个会话以释放读取锁。有关如何进行的操作,请参见第 16.1.2.5.3 节“在新源和副本之间设置复制”。