天天看點

mysql master master_如何設定MySQL主主(Master-Master )複制

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

mysql master master_如何設定MySQL主主(Master-Master )複制

在此設定中,如果在任一伺服器上進行的任何更改将都在另一台伺服器上更新。

設定細節:Master-1: 192.168.1.15

Master-2: 192.168.1.16

Database: mydb

步驟1:設定MySQL Master-1伺服器

編輯MySQL配置檔案并在[mysqld]部分下添加以下代碼。# vim /etc/my.cnf[mysqld]

log-bin=mysql-bin

binlog-do-db=mydb

server-id=1

重新開機MySQL伺服器以使更改生效。# 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-2伺服器

編輯mysql Master-2配置檔案并在[mysqld]部分下添加以下值。#vim /etc/my.cnf

[mysqld]

log-bin = mysql-bin

binlog-do-db = mydb

server-id = 1

server-id始終為非零數值。這些值永遠不會與其他主伺服器或從伺服器相似。

重新開機MySQL伺服器,如果已配置複制,請在啟動時使用-skip-slave-start,不要立即連接配接到主伺服器。#service mysqld restart

恢複從主伺服器擷取的資料庫備份。#mysql -u root -p mydb

在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-1的安裝

登入MySQL 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 Replication已在您的系統和工作模式下成功配置。要測試複制是否正常,請在任一伺服器上進行更改,并檢查更改是否反映在其他伺服器上。