MySQL半同步複製與加強半同步複製詳解及安裝

1、基礎mysql

1.目前MySQL主要有三種複製方式sql

1)異步複製vim

2)半同步複製服務器

3)加強半同步複製異步

推薦使用:對性能要求較高的推薦使用異步複製 ,若是運行的金融類業務推薦使用加強半同步複製,並使用ROW+GTID+5.7以上性能

1.1)異步複製測試

MySQL複製的默認方式spa

 

2.1)半同步複製的優缺點插件

rpl_semi_sync_master_wait_point=after_commit日誌

 缺點1: 幻讀

當用戶發起一個事務,該事務已經寫入redo日誌和binlog日誌,但該事務還沒寫入從庫,此時處在waiting slave dump處,此時另外一個用戶能夠讀取到這條數據,而他本身卻不能;

 

缺點2:數據丟失

一個事務在waiting slave dump處crash後,主庫將比從庫多一條數據

 

疑問:此時若是主從複製恢復後,該數據時候能夠正常同步到從服務器?(未測試!!)

 

3.1)加強半同步複製

rpl_semi_rsync_master_wait_point=after_sync

改善1:解決幻讀

當用戶發起一個事務,該事務寫入二進制後,便向從庫進行同步,此時其餘用戶沒法讀取到該數據,解決了幻讀

 

改善2:解決數據丟失

一個事務在waiting slave dump處crash掉後,能夠經過觀察從庫上是否存在主庫的last gtid值,若是存在,這條數據正常恢復,若是不存在則刪除主庫的那條多餘的GTID值,而後恢復,保證了數據的完整性;

 

2、部署

異步複製環境:一主一從

主IP:192.168.20.206

從IP:192.168.20.212

 

須要3個步驟:

1.給主庫加載半同步複製插件,並件修改主庫的my.cnf參數,

2.給從庫加載半同步複製插,並件修改從庫的my.cnf參數,

3.在從庫中執行使用stop salve io_thread 、start slave io_thread命令搞定

 

1.1)主庫加載半同步複製插件

install plugin rpl_semi_sync_master soname 'semisync_master.so';
 
1.2)主庫開啓半同步複製模式
set global rpl_semi_sync_master_enabled=1;
set global rpl_semi_sync_master_timeout=1000;
 
2.3)主庫修改my.cnf文件
 
vim /etc/my.cnf
[mysqld]
###:for replcation
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
 
 
2.1)從庫加載半同步複製插件
install plugin rpl_semi_sync_SLAVE soname 'semisync_slave.so';
 
2.2)從庫開啓半同步複製模式
set global rpl_semi_sync_slave_enabled=1;
 
2.3)從庫修改my.cnf文件
 
vim /etc/my.cnf
[mysqld]
###:for replcation
rpl_semi_sync_slave_enabled=1
 
3.3)在從庫中執行使用stop salve io_thread 、start slave io_thread;
stop slave io_thread;
start slave io_thread;
 
 
 
 
半同步複製監控命令:
show plugins;
show global status like '%semi%';
show global variables like '%semi%';
相關文章
相關標籤/搜索