12.7.2 执行初始的数据传输

将数据从主服务器传输到从服务器有几种方法。最简单的方法是设置从服务器(将在下一节介绍),然后运行LOAD DATA FROM MASTER语句。这种方法的问题是在数据传输过程中,它将锁定主服务器上的表,而且这种传输需要一定的时间,因此我们并不建议使用这种方法(只有使用MyISAM表时,可以使用这个选项)。

通常,在当前时间获得数据库的一个快照是一个更好的办法。可以使用本章其他地方介绍的备份过程来获得快照。必须首先使用如下语句来清空表:


flush tables with read lock;


使用读锁定的原因是必须在获得快照时记录服务器在二进制日志中的位置。可以通过执行如下所示的语句来实现:


show master status;


应该看到类似于如下所示的输出结果:


+———————————+—————+———————+—————————+

|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|

+———————————+—————+———————+—————————+

|laura-ltc-bin.000001|95|||

+———————————+—————+———————+—————————+


请注意,File和Position的值;需要这些信息来设置从服务器。

现在,使用如下所示的语句获得快照并去除表的读锁定:


unlock tables;


如果所使用的是InnoDB表,最简单的方法是使用InnoDB Hot Backup工具,可以在http://www.innodb.com获得该工具。这并不是一个免费软件,因此需要一定的许可费用。

或者,可以使用这里所介绍的步骤,在去除表锁定之前,关闭MySQL服务器,并且在重新启动服务器和去除表锁定之前,复制所希望复制的数据库整个目录。