環境:
主機名
主機IP
作業系統
MySQL版本
mysqlA
172.16.4.235
CentOS 6.5
2.6.32-431.el6.x86_64
mysql-community-server-5.7.5-0.6.m15.el6.x86_64
mysqlB
172.16.4.236
本文做一點補充:如果mysqlA已經運作了一段時間,要添加一台新的mysqlB,與mysqlA實作主主複制,就要先備份mysqlA上的資料導入到mysqlB,使資料保持一緻;記錄mysqlA上binlog的檔案名和Position,在mysqlB上執行change mater;再記錄mysqlB上binlog的檔案名和Position,在mysqlA上執行change mater。
下面有兩種實作方法:
方法一、
1)對mysqlA資料庫鎖表操作,不讓資料再進行寫入動作
<code>> flush tables </code><code>with</code> <code>read</code> <code>lock;</code>
不要退出連接配接,另開一個終端執行備份操作。
2)備份mysqlA的資料庫
<code>mysqldump -uroot -p --single-transaction --opt --events --triggers --routines --flush-logs --master-data=2 --databases db1 db2 > db.sql</code>
--flush-logs:選項用以生成新的二進制日志檔案。
--master-data:選項值等于2,備份後的sql檔案裡CHANGE MASTER語句被注釋。
--single-transaction:InnoDB 表在備份時,通常啟用選項 --single-transaction 來保證備份的一緻性,實際上它的工作原理是設定本次會話的隔離級别為:REPEATABLE READ,以確定本次會話(dump)時,不會看到其他會話已經送出了的資料。
3)看mysqlA資料庫的狀态,記錄File和Position項的值後解鎖。
<code>> show master status;</code>
<code>> unlock tables;</code>
<a href="http://s3.51cto.com/wyfs02/M02/57/8D/wKiom1SdJUrBA7fOAAJle2urOEM591.jpg" target="_blank"></a>
上圖所示二進制日志檔案為mysql-bin.000002,位置為120。
4)在mysqlB上導入mysqlA的資料
<code>mysql -uroot -p</code><code>'MNVq_YOg9'</code> <code>< db.sql</code>
5)生成CHANGE MASTER語句,然後在mysqlB上執行
<code>> STOP SLAVE; </code>
<code>> CHANGE MASTER </code><code>TO</code> <code>MASTER_HOST=</code><code>'172.16.4.235'</code><code>,MASTER_USER=</code><code>'repl_user'</code><code>,MASTER_PASSWORD=</code><code>'MNVq_YOg9'</code><code>,MASTER_LOG_FILE=</code><code>'mysql-bin.000002'</code><code>, MASTER_LOG_POS=120;</code>
<code>> START SLAVE;</code>
<code>> SHOW SLAVE STATUS\G</code>
<a href="http://s3.51cto.com/wyfs02/M01/57/8A/wKioL1SdKKrCngloAATkjRsqgnM327.jpg" target="_blank"></a>
Slave_IO_Running和Slave_SQL_Running的狀态,如果都為Yes,從庫mysqlB配置成功。
6)記錄mysqlB的File和Position項的值,生成CHANGE MASTER語句,然後在mysqlA上執行,啟動mysqlA的slave
略。
方法二、
1)備份A的資料庫(不用鎖表)
2)使用grep指令查找二進制日志的名稱以及位置
<code>grep</code> <code>-i </code><code>"change master"</code> <code>db.sql</code>
<a href="http://s3.51cto.com/wyfs02/M02/57/8B/wKioL1SdK2ySy6FcAADRLSJaW1Y087.jpg" target="_blank"></a>
上圖所示二進制日志檔案為mysql-bin.000002,位置為120。
然後執行方法一的4)、5)、6)即可。
版權聲明:原創作品,如需轉載,請與作者聯系。否則将追究法律責任
本文轉自 張斌_青島 51CTO部落格,原文連結:http://blog.51cto.com/qicheng0211/1596310