17.1.1.4 Obtaining the Replication Master Binary Log Coordinates 获取复制Master Binary Log的坐标:

时间:2023-03-08 22:14:29
17.1.1.4 Obtaining the Replication Master Binary Log Coordinates 获取复制Master Binary Log的坐标:

你需要master的当前坐标 在它的binary log 为了配置slave来启动复制进程在合适的点上

如果你有存在的数据在master上,你需要同步到你的slaves在开始复制进程前,

你必须停止处理语句在master上, 然后得到它的准备的binary log 坐标然后dump 它的数据,

在允许Master继续执行语句前,如果你不停止执行语句,数据dump和master 状态信息你使用的不会匹配 在你结束不一致的或者冲突的数据库

在slaves上。

要获得 master binary log 坐标,按照下面的步骤:

1. 开始一个session 在master上通过连接到它在命令行客户端,flush all tables和block 写操作通过执行

 FLUSH TABLES WITH READ LOCK statement:

2.对于InnoDB 表,FLUSH TABLES WITH READ LOCK 也堵塞 COMMIT操作

警告:

   留着客户端 你执行FLUSH TABLES 语句 运行,这样read lock 仍旧有效,如果你退出客户端,lock被释放。

2. 在一个不同的session在Master上,执行 SHOW MASTER STATUS 语句来确定当前的binary log 文件名和位置;

mysql > SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 73 | test | manual,mysql |
+------------------+----------+--------------+------------------+ 文件列显示 log file的名字,Position 显示文件的位置。 在这个例子中,binary log 文件是mysql-bin.000003 和 位置是73. 记录这些值,你需要随后当你设置复制的时候使用。它们代表复制坐标 slave应该开始处理新的更新从master server. 如果master 已经之前运行了没有启动binary logging , log 文件名字和位置值是通过SHOW MASTER STATUS or mysqldump --master-data 会显示为空。 在那种情况下, 你需要使用的值 当指定slave的log 文件和位置是空的字符串 你现在有需要的信息老让slave 开始从binary log 读取 在正确的位置开始复制 如果你已经存在数据 需要同步到slave 在开始复制前, 如果你设置一个新的master 和slave 复制组,你可以退出第一个session 窗口来释放read lock.