mysql高可用雙主配置

1.環境配置
master A  192.168.0.109
master B  192.168.0.112
都已安裝完畢mysql 版本爲5.7.12
2.複製配置
A
B
server-id=1
server-id=2
log-bin=mysql-master-bin
log-bin=mysql-master-bin
binlog_format=row
binlog_format=row
relay_log_recovery=1
relay_log_recovery=1
log_slave_updates=1
log_slave_updates=1
slave-skip-errors=all
slave-skip-errors=all
auto-increment-offset=1
auto-increment-offset=2
auto-increment-increment=2
auto-increment-increment=2
gtid-mode=on
gtid-mode=on
enforce-gtid-consistency=true
enforce-gtid-consistency=true
參數說明:
binlog_format:二進制日誌的格式,有row、statement和mixed幾種類型。
relay_log_recovery:當slave從庫宕機後,假如relay-log損壞了,導致一部分中繼日誌沒有處理,則自動放棄所有未執行的relay-log,並且重新從master上獲取日誌,這樣就保證了relay-log的完整性。
log_slave_updates:表示slave將複製事件寫進自己的二進制日誌。當設置log_slave_updates時,你可以讓slave扮演其它slave的master。此時,slave把SQL線程執行的事件寫進行自己的二進制日誌(binary log),然後,它的slave可以獲取這些事件並執行它,slave可以是其它slave的master,從而擴散master的更新。
slave-skip-errors:跳過主從複製出現的錯誤 
auto-increment-offset:自增長字段從那個數開始,他的取值範圍是1 .. 65535
auto-increment-increment:自增長字段每次遞增的量,其默認值是1,取值範圍是1 .. 65535
在主主同步配置時,需要將兩臺服務器的auto_increment_increment增長量都配置爲2,而要把auto_increment_offset分別配置爲1和2。這樣纔可以避免兩臺服務器同時做更新時自增長字段的值之間發生衝突。參考:http://dev.mysql.com/doc/refman/5.0/en/replication-options-master.html
gtid-mode=on:啓用gtid類型,基於事務複製,否則就是普通的複製架構database
enforce-gtid-consistency=true:強制GTID的一致性
slave-parallel-type='logical_clock':基於組提交的並行複製方式,默認database 基於庫的並行複製方式
slave-paralles-workers=4:設定從服務器的SQL線程數;0表示關閉多線程複製功能;值與你要複製的數據庫數目相同即可;
master-info-repository=TABLE :主服信息記錄庫=表/文件,多源複製需要配置
relay-log-info-repository=TABLE:中繼日誌信息記錄庫,多源複製需要配置
sync-master-info=1:同步主庫信息

3.步驟
1)按照2中配置修改my.cnf文件,並重啓數據庫
可以通過如下命令查看:
show master status \G   查看master信息
show variables like 'gtid%';  查看gtid-mode開啓狀態
2)在master A上創建複製用戶:
>create user 'repltest'@'192.168.0.%'  identified by 'abc123';
>grant  replication slave on *.* to 'repltest'@'192.168.0.%';
3)在master B建立change master複製信道
>change master to master_host='192.168.0.109',
>master_user='repltest',
>master_password='abc123',
>MASTER_AUTO_POSITION=1;
啓動複製 start slave
通過show slave status \G 查看slave狀態

可以查看在master新增的複製用戶也通過了過來。
4)在master A建立change master複製信道
>change master to master_host='192.168.0.112',
>master_user='repltest',
>master_password='abc123',
>MASTER_AUTO_POSITION=1;
啓動複製 start slave
4.測試同步複製
1)在master A創建數據庫 和表 並插入數據
mysql> create database test_db;
mysql> create table temp(id int primary key not null auto_increment,a int,b int,c int as (a*b));
mysql> insert into temp (a,b)values(1,2),(3,4),(5,6);
可以在master B查看數據正常同步。
2)在master B上insert數據也可以及時同步masterA;

配置了雙主複製,A和B都可以讀寫,後續可以配置Keepalived實現雙主熱備,具體參考:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章