假如master已經運行很久了,想對新安裝的slave進行數據同步,甚至它沒有master的數據。
此時,有幾種方法可以使slave從另一個服務開始,例如,從master拷貝數據,從另一個slave克隆,從最近的備份開始一個slave。Slave與master同步時,需要三樣東西:
1)master的某個時刻的數據快照;
2)master當前的日志文件、以及生成快照時的字節偏移。這兩個值可以叫做日志文件坐標(log file coordinate),因為它們確定了一個二進制日志的位置,你可以用SHOW MASTER STATUS命令找到日志文件的坐標;
3)master的二進制日志文件。
可以通過以下幾中方法來克隆一個slave:
1)、冷拷貝(coldcopy)
停止master,將master的文件拷貝到slave;然后重啟master。缺點很明顯。
2)、熱拷貝(warmcopy)
如果你僅使用MyISAM表,你可以使用mysqlhotcopy拷貝,即使服務器正在運行。
3)、使用mysqldump
使用mysqldump來得到一個數據快照可分為以下幾步:
<1>鎖表:如果你還沒有鎖表,你應該對表加鎖,防止其它連接修改數據庫,否則,你得到的數據可以是不一致的。如下:
mysql> FLUSH TABLES WITH READ LOCK;
<2>在另一個連接用mysqldump創建一個你想進行復制的數據庫的轉儲:
shell> mysqldump -uroot –p123456 -A -B –events--default-character-set>/opt/$(date+%F).sql
<3>對表釋放鎖。
mysql> UNLOCK TABLES;