一、實現原理
主主復制即在兩臺MySQL主機內都可以變更數據,而且另外一臺主機也會做出相應的變更。聰明的你也許已經想到該怎么實現了。對,就是將兩個主從復制有機合并起來就好了。只不過在配置的時候我們需要注意一些問題,例如,主鍵重復,server-id不能重復等等。
主主復制----->互為主從
二、實現功能
兩臺MySQL之間互為彼此的從庫,同時又是主庫。這種方案,既做到了訪問量的壓力分流,同時也解決了“單點故障”問題。任何一臺故障,都還有另外一套可供使用的服務。
三、架構模式
四、配置文件
--192.168.18.5
【mysqld】
server-id=1 #任意自然數n,只要保證兩臺MySQL主機不重復就可以了。
log-bin=mysql-bin #開啟二進制日志
log_bin_index = mysql-bin.index
relay_log = mysql-relay-bin
relay_log_index = mysql-relay-bin.index
read_only = 1
skip_slave_start = 1
auto_increment_increment=2 #步進值auto_imcrement。一般有n臺主MySQL就填n
auto_increment_offset=1 #起始值。一般填第n臺主MySQL。此時為第一臺主MySQL
binlog-ignore=mysql #忽略mysql庫
binlog-ignore=information_schema #忽略information_schema庫
slave-skip-errors = all
--192.168.18.6
【mysqld】
server-id = 2
log_bin = mysql-bin
log_bin_index = mysql-bin.index
relay_log = mysql-relay-bin
relay_log_index = mysql-relay-bin.index
read_only = 1
skip_slave_start = 1
log_slave_updates = 1
auto-increment-increment = 2
auto-increment-offset = 2 #此處區別于18.5的配置
slave-skip-errors = all
配置好后重啟MySQL
兩臺數據庫的/etc/my.cnf配置
五、互相授權訪問權限
18.5上執行授權root遠程18.6
MySQL [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.18.6' IDENTIFIED BY '1qaz2wsx';
Query OK, 0 rows affected, 1 warning (0.06 sec)
MySQL [(none)]> flush privileges;
Query OK, 0 rows affected (0.05 sec)
18.6上執行授權root遠程18.5
MySQL [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.18.5' IDENTIFIED BY '1qaz2wsx';
Query OK, 0 rows affected, 1 warning (0.04 sec)
MySQL [(none)]> flush privileges;
Query OK, 0 rows affected (0.03 sec)
在18.5上查看二進制文件名與位置
在18.6上告知18.5的文件名與位置
MySQL [(none)]> CHANGE MASTER TO
-> MASTER_HOST='192.168.18.5',
-> MASTER_USER='root',
-> MASTER_PASSWORD='1qaz2wsx',
-> MASTER_LOG_FILE='mysql-bin.000003',
-> MASTER_LOG_POS=154;
至此完成主從模式。
要完成主主,相反,18.6也要告知18.5的二進制文件名與位置
在18.6上查看
在18.5上執行
MySQL [(none)]> CHANGE MASTER TO
-> MASTER_HOST='192.168.18.6',
-> MASTER_USER='root',
-> MASTER_PASSWORD='1qaz2wsx',
-> MASTER_LOG_FILE='mysql-bin.000005',
-> MASTER_LOG_POS=154;
Query OK, 0 rows affected, 2 warnings (0.31 sec)
然后分別開啟start slave;
查看slave狀態
至此完成主主復制。
配置主主之前,mysql的庫最好是一致的,也就是初始化的模式的,如果庫不一致,會導致報錯。
參考鏈接
報錯參考鏈接
配置參考鏈接
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。