首頁 >資料庫 >mysql教程 >如何設定MySQL主主(Master-Master )複製

如何設定MySQL主主(Master-Master )複製

不言
不言原創
2019-03-05 11:12:253137瀏覽

如何設定MySQL主主(Master-Master )複製 Master-Slave複製是在主伺服器完成變更後立即設定從伺服器進行更新。但是如果在從屬伺服器上進行了任何更改,它將不會更新Master。這篇文章將介紹在如何設定MySQL主主(Master-Master )複製伺服器之間設定Master-Master複製。

如何設定MySQL主主(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 *.*&#39;&#39;repl_user&#39;@&#39;%&#39;IDENTIFIED BY&#39;secretpassword&#39;; 
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 =&#39;192.168.1.15&#39;,
    - > MASTER_USER =&#39;repl_user&#39;,
    - > MASTER_PASSWORD =&#39;secretpassword&#39;,
    - > MASTER_LOG_FILE =&#39;mysql-bin.000003&#39;,
    - > MASTER_LOG_POS = 332;

步驟3:完成如何設定MySQL主主(Master-Master )複製 Master-1的安裝

登入如何設定MySQL主主(Master-Master )複製 Master-1伺服器並執行下列指令。

mysql> CHANGE MASTER TO MASTER_HOST =&#39;192.168.1.16&#39;,
     MASTER_USER =&#39;repl_user&#39;,
     MASTER_PASSWORD =&#39;secretpassword&#39;,
     MASTER_LOG_FILE =&#39;mysql-bin.000001&#39;,
     MASTER_LOG_POS = 847;


步驟4:在兩台伺服器上啟動SLAVE

#在兩台伺服器上執行下列命令以啟動複製從屬程序。

mysql> SLAVE START;

如何設定MySQL主主(Master-Master )複製 Master-Master Replication已在您的系統和工作模式下成功設定。若要測試複製是否正常,請在任一伺服器上進行更改,並檢查更改是否反映在其他伺服器上。

#

以上是如何設定MySQL主主(Master-Master )複製的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn