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