如何設定MySQL主主(Master-Master )複製 Master-Slave複製是在主伺服器完成變更後立即設定從伺服器進行更新。但是如果在從屬伺服器上進行了任何更改,它將不會更新Master。這篇文章將介紹在如何設定MySQL主主(Master-Master )複製伺服器之間設定Master-Master複製。
在此設定中,如果在任一伺服器上進行的任何變更將都在另一台伺服器上更新。
設定細節:
Master-1: 192.168.1.15 Master-2: 192.168.1.16 Database: mydb
步驟1:設定如何設定MySQL主主(Master-Master )複製 Master-1伺服器
編輯如何設定MySQL主主(Master-Master )複製設定檔並在[ mysqld]部分下新增以下程式碼。
# vim /etc/my.cnf
[mysqld] log-bin=mysql-bin binlog-do-db=mydb server-id=1
重啟如何設定MySQL主主(Master-Master )複製伺服器以使變更生效。
# service mysqld restart
在Master-1伺服器上建立一個具有REPLICATION SLAVE權限的mysql帳戶,複製客戶端將連接到master。
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY 'secretpassword'; mysql> FLUSH PRIVILEGES;
所有表上都有block write語句,因此備份後不能進行任何更改。
mysql> use mydb; mysql> FLUSH TABLES WITH READ LOCK;
使用下列命令檢查目前二進位日誌檔案名稱(File)和目前偏移量(Position)值。
mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000003 | 332 | mydb | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
上面的輸出顯示目前的二進位檔案使用的是mysql-bin.000003,偏移值為332。記下這些值,以便在下一步中在master-2伺服器上使用。
備份資料庫並將其複製到另一個mysql伺服器。
# mysqldump -u root -p mydb > mydb.sql # scp mydb.sql 192.168.1.16:/opt/
完成備份後,從表中刪除READ LOCK,以便進行更改。
mysql> UNLOCK TABLES;
步驟2:設定如何設定MySQL主主(Master-Master )複製 Master-2伺服器
#編輯mysql Master-2設定檔並在[mysqld]部分下新增下列值。
#vim /etc/my.cnf [mysqld] log-bin = mysql-bin binlog-do-db = mydb server-id = 1
server-id始終為非零數值。這些值永遠不會與其他主伺服器或從伺服器相似。
重啟如何設定MySQL主主(Master-Master )複製伺服器,如果已設定複製,請在啟動時使用-skip-slave-start,不要立即連接到主伺服器。
#service mysqld restart
恢復從主伺服器取得的資料庫備份。
#mysql -u root -p mydb </opt/mydb.sql
在Master-1伺服器上建立一個具有REPLICATION SLAVE權限的mysql帳戶,複製客戶端將連接到master。
mysql> GRANT REPLICATION SLAVE ON *.*''repl_user'@'%'IDENTIFIED BY'secretpassword'; mysql> FLUSH PRIVILEGES;
使用下列命令檢查目前二進位日誌檔案名稱(File)和目前偏移量(Position)值。
mysql > SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 847 | mydb | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
上面的輸出顯示目前二進位檔案使用mysql-bin.000001,偏移值為847。記下這些值以在步驟3中使用。
使用下列指令在從屬伺服器上設定選項值。
mysql> CHANGE MASTER TO MASTER_HOST ='192.168.1.15', - > MASTER_USER ='repl_user', - > MASTER_PASSWORD ='secretpassword', - > MASTER_LOG_FILE ='mysql-bin.000003', - > MASTER_LOG_POS = 332;
步驟3:完成如何設定MySQL主主(Master-Master )複製 Master-1的安裝
登入如何設定MySQL主主(Master-Master )複製 Master-1伺服器並執行下列指令。
mysql> CHANGE MASTER TO MASTER_HOST ='192.168.1.16', MASTER_USER ='repl_user', MASTER_PASSWORD ='secretpassword', MASTER_LOG_FILE ='mysql-bin.000001', MASTER_LOG_POS = 847;
步驟4:在兩台伺服器上啟動SLAVE
#在兩台伺服器上執行下列命令以啟動複製從屬程序。
mysql> SLAVE START;
如何設定MySQL主主(Master-Master )複製 Master-Master Replication已在您的系統和工作模式下成功設定。若要測試複製是否正常,請在任一伺服器上進行更改,並檢查更改是否反映在其他伺服器上。
#以上是如何設定MySQL主主(Master-Master )複製的詳細內容。更多資訊請關注PHP中文網其他相關文章!