19.1.2.4 获取复制源二进制日志坐标
为了配置复制源以在正确的点开始复制过程,您需要记录源的当前二进制日志坐标。
这个过程使用FLUSH TABLES WITH READ LOCK
,该语句将阻塞COMMIT
操作对InnoDB
表。
如果您计划关闭源以创建数据快照,可以选择跳过这个过程,而是将二进制日志索引文件与数据快照一起存储。在这种情况下,源在重启时创建新的二进制日志文件。因此,复制源必须从该文件的开始处开始复制过程,这是源的下一个二进制日志文件,位于已复制的二进制日志索引文件中。
要获取源二进制日志坐标,请按照以下步骤操作:
-
在源上启动一个会话,使用命令行客户端连接到源,并执行
FLUSH TABLES WITH READ LOCK
语句以刷新所有表和阻塞写语句:mysql> FLUSH TABLES WITH READ LOCK;
Warning不要退出客户端,以保持读锁定的效果。如果您退出客户端,锁定将被释放。
-
在源上启动另一个会话,使用
SHOW BINARY LOG STATUS
语句来确定当前二进制日志文件名和位置:mysql> SHOW BINARY LOG 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 BINARY LOG STATUS
或mysqldump--source-data
显示的日志文件名和位置为空。在这种情况下,您需要使用的值是空字符串(''
)和4
。
现在,您已经拥有了启用复制源以从正确的位置开始读取二进制日志的信息。
下一步取决于您在源上是否有现有数据。选择以下选项之一:
-
如果您需要将现有数据同步到副本,然后开始复制,保持客户端运行,以保持锁定状态。这防止了任何进一步的更改,以确保复制到副本的数据与源数据同步。继续阅读第19.1.2.5节,“数据快照选择方法”。
-
如果您正在设置新的源和副本组合,可以退出第一个会话以释放读锁。查看第19.1.2.6.1节,“使用新源和副本设置复制”以了解下一步操作。