一主多從,可以緩解讀的壓力,但是一旦主宕機了,就不能寫了;所以我們可以采用雙主雙從架構
雙主雙重架構規劃:
主master 3307 ---> 從slave 3309
主master 3308 ---> 從slave 3310
3307 <---> 3308 互為主從
2個寫節點,每個寫節點下又是2個讀節點;
1、配置每一臺MySQL服務器的配置文件my.cnf
3307
3308
3309
3310
2、與一主多從一樣,所有主服務器配置文件加上binlog配置
3307
3308
3309
3310
log-bin=mysql-bin
server-id=實例的端口(server-id要唯一)
3、第一臺主服務器3307的my.cnf文件增加如下配置:(Master 3307)
auto_increment_increment=2
auto_increment_offset=1
log-slave-updates
sync_binlog=1
4、第二臺主服務器3308的my.cnf文件增加如下配置:(Master 3308)
auto_increment_increment=2
auto_increment_offset=2
log-slave-updates
sync_binlog=1
auto_increment_increment,控制主鍵自增的自增步長,用于防止Master與Master之間復制出現重復自增字段值,通常auto_increment_increment=n,有多少臺主服務器,n 就設置為多少;
auto_increment_offset=1設置自增起始值,這里設置為1,這樣Master的auto_increment字段產生的數值是:1, 3, 5, 7, …等奇數ID
注意auto_increment_offset的設置,不同的master設置不應該一樣,否則就容易引起主鍵沖突,比如master1的offset=1,則master2的offset=2,master3的offset=3
在雙主模式中,log-slave-updates 配置項一定要配置,否則在master1(3307)上進行了更新數據,在master2(3308)和slave1(3309)上會更新,但是在slave2(3310)上不會更新
sync_binlog表示每幾次事務提交,MySQL把binlog緩存刷進日志文件中,默認是0,最安全的是設置為1;