《MYSQL數據庫MySQL半同步復制》要點:
本文介紹了MYSQL數據庫MySQL半同步復制,希望對您有用。如果有疑問,可以聯系我們。
MYSQL入門 何為半同步復制模式呢?在此我們先了解異步復制模式,這是MySQL的默認復制選項.異步復制即是master數據庫把binlog日志發送給slave數據庫,然后就沒有了然后了.在此暴露一個問題,當slave服務器發生故障了,那么肯定會導致主從數據庫服務器的數據不一致.
MYSQL入門 為了解決上面的問題,MySQL5.5引入一種叫做半同步復制模式.開啟這種模式,可以保證slave數據庫接收完master數據庫發送過來的binlog日志并寫入自己的中繼日志中,然后反饋給master數據庫,告知已經復制完畢.
MYSQL入門 開啟這種模式后,當出現超時,主數據庫將會自動轉為異步復制模式,直到至少有一臺從服務器接受到主數據庫的binlog,并且反饋給主數據庫.這時主數據庫才會切換回半同步復制模式.
MYSQL入門注意:
MYSQL入門半同步復制模式必須在主服務器和從服務器同時中開啟,否則將會默認為異步復制模式.
MYSQL入門 兩臺linux虛擬主機
MYSQL入門 Linux版本CentOS6.6、MySQL 5.5
MYSQL入門 ip:192.168.95.11(主)、192.168.95.12(從)
MYSQL入門 1、必須是MySQL5.5或者以上
MYSQL入門 2、MySQL必須有自動加載功能,即have_dynamic_loading變量為YES(因為我們是在MySQL里面來加載安裝這個功能插件)
MYSQL入門 ?show variables like 'have_dynamic_loading';? #檢查是否具有自動加載功能
MYSQL入門
MYSQL入門 3、主從復制已經配置好,并且已經ing工作著的.
MYSQL入門 ?主從復制配置教程:http://www.cnblogs.com/phpstudy2015-6/p/6485819.html
?
MYSQL入門?
MYSQL入門 192.168.95.11加載安裝:
?
- ?mysql>install?plugin?rpl_semi_sync_master?soname?'semisync_master.so';?
- 2??
- 3?mysql>show?plugins;???#查看是否加載成功?
- 4??
- 5?mysql>SET?GLOBAL?rpl_semi_sync_master_enabled?=?1;??#開啟半同步復制,默認是關閉的?
MYSQL入門
192.168.95.12加載安裝
?
- mysql>INSTALL?PLUGIN?rpl_semi_sync_slave?SONAME?'semisync_slave.so';?
- ??
- ?mysql>show?plugins;???#查看是否加載成功?
- ??
- ?mysql>SET?GLOBAL?rpl_semi_sync_slave_enabled?=?1;??#開啟半同步復制,默認是關閉的?
- ?
- ?#重啟從服務器IO線程,手動將異步模式切換為半同步模式?
- ??
- ?mysql>STOP?SLAVE?IO_THREAD;?
- ?
- mysql>START?SLAVE?IO_THREAD;?
MYSQL入門?
- rpl_semi_sync_master_enabled=1??#主庫配置文件添加,表示以后啟動MySQL將會自動開啟半同步復制?
- ?
- ?rpl_semi_sync_slave_enabled=1??#從庫配置文件添加,同上?
MYSQL入門 1、主從執行命令show variables like '%semi%';
MYSQL入門 master:
MYSQL入門
MYSQL入門 Rpl_semi_sync_master_enabled=ON表示開啟半同步復制
MYSQL入門 Rpl_semi_sync_master_timeout=1000默認1000毫秒,即10秒超時,將切換為異步復制
MYSQL入門 Rpl_semi_sync_master_wait_no_slave表示是否允許master每個事物都要等待slave接收確認,默認為ON
MYSQL入門 Rpl_semi_sync_master_trace_level=32表示用于開啟半同步復制時的調試級別,默認32
MYSQL入門 slave:
MYSQL入門
MYSQL入門 Rpl_semi_sync_slave_enabled=ON表示在slave已經開始半同步復制模式
MYSQL入門 Rpl_semi_sync_slave_trace_level=32表示用于開啟半同步復制時的調試級別,默認32
MYSQL入門 2、主從執行命令show status like '%semi%';
MYSQL入門 master
MYSQL入門
MYSQL入門 Rpl_semi_sync_master_status表示主服務器使用是異步還是半同步復制
MYSQL入門 Rpl_semi_sync_master_client表示從服務器有多少個配置成半同步復制
MYSQL入門 Rpl_semi_sync_master_yes_tx表示從服務器確認成功提交的數量
MYSQL入門 Rpl_semi_sync_master_no_tx表示從服務器確認失敗提交的數量
MYSQL入門 slave:
MYSQL入門
MYSQL入門?
MYSQL入門 Rpl_semi_sync_slave_status表示從服務器開啟半同步復制
MYSQL入門 模擬slave掛掉,master等待10s仍沒接收到反饋信號,則轉為異步復制模式,繼續執行
MYSQL入門 首先同步創建數據庫aa
MYSQL入門 1、slave執行stop slave;關閉主從復制
MYSQL入門 2、master在aa數據庫中創建表tab1,沒接收到反饋信號,等待十秒后(Rpl_semi_sync_master_timeout=1000等待超時),繼續執行
MYSQL入門 master:
MYSQL入門
MYSQL入門 slave:
MYSQL入門
MYSQL入門 3、master在數據庫中再創建tab2,不需要等待反饋,直接執行
MYSQL入門 【當反饋超時時,master將切換到異步復制模式.此時是異步模式,不需要等待】
MYSQL入門 ?
MYSQL入門 4、slave執行start slave,數據開始同步,建立tab1、tab2,反饋給master,并切換為半同步復制
MYSQL入門
MYSQL入門 5、slave執行stop slave;關閉主從復制
MYSQL入門 6、master在數據庫中創建表tab3,此時需要等待10s,接收slave反饋信號;等待超時,切換為異步復制模式,繼續執行
MYSQL入門 【步驟4時,數據同步已經反饋給master,此時master已經是半同步復制模式】
MYSQL入門
?
MYSQL入門 半同步復制模式的性能和并發比異步復制模式低的,因為每次復制都要進行反饋,相比之下多了一個步驟.
MYSQL入門 說實話我還是不太明白為什么半同步復制就可以保持數據的完整性呢?若是slave掛了,master還不是變回異步復制.和之前的全異步沒什么區別.還有就是即使多了個信息反饋,但是反饋回來除了讓master確認還有什么作用?假若slave掛了,沒有反饋信息,那master還是沒什么進一步的處理方法呀.
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/5751.html