17.1.1.4 Obtaining the Replication Master Binary Log Coordinate

17.1.1.4 Obtaining the Replication Master Binary Log Coordinate 得到复制master binary log的坐标

你需要master的当前的坐标 在binary log 为了配置slave来开始复制在正确的点上。

如果你master上已经存在数据,你需要同步到你的slave上在你开始复制前,你必须停止处理语句在master上,

得到一个当前binary log 坐标和dump 它的数据,在允许master继续执行语句前。

如果你不停止执行语句,数据dump和master 状态信息,你使用会不匹配,最终是不一致的或者损坏数据在slave上。

获得master 上的binary log 坐标,遵循以下步骤:

1.开始一个session 在master上通过命令行,flush 所有的表和block 写语句通过执行

FLUSH TABLES WITH READ LOCK语句:

mysql> FLUSH TABLES WITH READ LOCK;

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

警告:

保留你执行FLUSH TABLES语句的客户端 运行,因为read lock 仍旧生效,如果退出客户端,lock 会被释放。

在Master上的另一个会话,使用SHOW MASTER STATUS 语句来确定当前log file name和position。

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

File 列显示了log file 的名字和Position 显示文件的位置。在这个例子中,binary log 文件是mysql-bin.000003 and the

position is 73.

记录这些值,你需要它们在后面当你设置slave的时候,它们代表复制的坐标,slave开始处理新的update 从master接收。

如果master 已经运行以前没有binary log启用,log file name 和position 值 通过SHOW MASTER STATUS

或者mysqldump –master-data 会变空,在这种情况下,

现在你有你需要的信息,slave开始从binary log 在正确的位置开始复制。

如果你有存在的数据,需要被同步到slave在你开始复制前,让客户端保持运行,因为lock仍旧in place

原文地址:https://www.cnblogs.com/hzcya1995/p/13351336.html