MySQL主主複製結構區別於主從複製結構。在主主複製結構中,兩台伺服器的任何一台上面的資料庫存發生了改變都會同步到另一台伺服器上,這樣兩台伺服器互為主從,並且都能向外提供服務。 這就比使用主從複製具有更好的效能。
接下來我將使用兩個同樣的伺服器來實現這個效果:
具體Mysql的安裝我就省略了,在上一篇的Mysql的主從架構的配置中有詳細介紹
server1_mysql:192.168.1.108
server2_mysql: 192.168.1.110
拓撲結構:
server1_mysql-------server2_mysql
1.建立使用者並授權
server1:
mysql> GRANT REPLICATION SLAVE ON *.* TO 'server2'@'192.168.1.110' IDENTIFIED BY 'server2';
server2:
mysql> GRANT REPLICATION SLAVE ON *.* TO 'server1'@'192.168.1.108' IDENTIFIED BY 'server1';
2.修改Mysql的主設定檔
server1:
[mysqld] server-id = 10 log-bin = mysql-bin replicate-do-db = mydb auto-increment-increment = 2 //每次增長2 auto-increment-offset = 1 //設定自動成長的欄位的位移量,即初始值為1
啟動Mysql服務:
# service mysqld restart
server2:
[mysqld] server-id = 20 log-bin = mysql-bin replicate-do-db = mydb auto-increment-increment = 2 //每次增長2 auto-increment-offset = 2 //設定自動成長的欄位的位移量,即初始值為2
啟動Mysql服務:
# service mysqld restart
註:二都只有server-id不同和 auto-increment- offset不同
auto-increment-increment的值應設為整個結構中伺服器的總數,本案例用到兩
台伺服器,所以值設為2。
3.重新啟動兩個伺服器
# service mysqld restart
4.為了讓兩個資料庫一樣,我們備份其中一個資料庫,然後在另一個資料庫上恢
複,這樣是兩個資料庫一開始都是一樣的。
在server1上操作:
# mysqldump --databases luowei > /tmp/luowei.sql
在server2上操作:
建立一個與mydb同名的空資料庫
# mysql > CREATE DATABASE mydb; >\q # scp 192.168.1.108:/tmp/mydb.sql ./ # mysql -uroot -p mydb < /tmp/luowei.sql
5.然後兩個伺服器相互連告二進位日誌的位置並啟動複製功能:
在server1上:
# mysql > CHANGE MASTER TO > MASTER_HOST='192.168.1.110', > MASTER_USER='server2', > MASTER_PASSWORD='server2'; mysql > START SLAVE;
在server2上:
# mysql > CHANGE MASTER TO > MASTER_HOST='192.168.1.108', > MASTER_USER='server1', > MASTER_PASSWORD='server1'; mysql > START SLAVE;
6.查看,並驗證:
分別在兩個資料庫伺服器上查看
mysql > START SLAVE;
然後查看資料庫和表,你會發現內容是一樣的,這樣就是整個主主Mysql的架構的配置過程。