MySQL5.5半同步功能的安裝步驟
在保證數據(jù)庫性能的前提下(xià),怎麽保證數據的(de)一致性呢?
在MySQL 5.5版本中即支(zhī)持異步複製又(yòu)支持半同(tóng)步複(fù)製。
1、當slave 連接master的(de)時候,它會指出它(tā)是否支持半同步複製。
2、當master啟用 semisynchronous replication.並且(qiě)至少(shǎo)有一台slave也啟用了該功能,master端的事務會被阻塞,並且等到(dào)該事務會(huì)等待其中任(rèn)何一個slave接受到該事務,或者(zhě)超過等待時間才會提交(jiāo)。
3、slave端回複給master的信息依據是slave事務已經寫入到relay-log並且已經刷寫到(dào)了磁盤。
4、如果master端等待超時(shí)的話,沒有任何slave給(gěi)出該事務已經寫(xiě)入relay-log的(de)信息,那(nà)麽他會自動轉到異步複(fù)製,當其(qí)中一個(gè)支持異步複製的slave追趕上了master,那麽master會進入到半同步(bù)複製狀態(tài)。
5、半同步(bù)複製必須是兩端都(dōu)支持。
當master的線(xiàn)程處於被阻塞(等待(dài)slave端返回的消息時),並不(bú)會(huì)給該會話session返回任何消息。當(dāng)阻塞結束的時候,master會返(fǎn)回給(gěi)該session消息。
如果一個事務中包含對非事務表的修改,在發生rollback的情況下,master也是會這些信(xìn)息寫入到binlog上麵,並(bìng)且也會發生阻塞(sāi),等待slave端寫入。
半同步複製需要在(zài)數據(jù)一致性和性能上作出權衡。
5.5半同步功能的安裝步驟
1、這個首先需要5.5支持動態加載模塊:查看變量: have_dynamic_loading是否(fǒu)是yes;
2、基本的複(fù)製架構已經搭建
3、master端和slave端的模塊是隨著版本發布的,在master端執行:
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
在slave端執行:
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
如果在(zài)安裝的時候出現如下錯誤(wù),請下載缺失(shī)的組(zǔ)件:http://dev.mysql.com/downloads/os-linux.html.
ERROR 1126 (HY000): Can't open shared library
'/usr/local/mysql/lib/plugin/semisync_master.so' (errno: 22 libimf.so: cannot open
shared object file: No such file or directory)
安(ān)裝完成後,還需(xū)要設置(zhì)變量(liàng)才能正常啟動:
SET GLOBAL rpl_semi_sync_master_enabled =1;
SET GLOBAL rpl_semi_sync_master_timeout =N 設置好超時時間(jiān),默認是10s (有點長啦)
在slave 端執行:
SET GLOBAL rpl_semi_sync_slave_enabled =1
(以上信息都(dōu)可以寫到my.cnf文件中(zhōng))
這個時候複製還是屬於異步複製,隻有重啟(qǐ)slave或者 重啟 slave I/O線程,才能真正使(shǐ)用半同步複(fù)製功能(néng)。
stop slave io_thread;start slave io_thread;
監控半同步(bù)複製狀(zhuàng)態;
幾個重要的變量是:
rpl_semi_sync_master_clients 支(zhī)持和已經注冊半同(tóng)步(bù)複製的已連接的slave數(shù)量。
rpl_semi_sync_master_status Master的(de)半同步複製狀態,1是活動狀態,0表示非活動,要麽(me)是沒(méi)有啟用該功能,要麽(me)以切換至異步複製狀態
rpl_semi_sync_slave_status Slave 上的半同步(bù)複製(zhì)狀態,1,表示已經啟用而且I/O線程正在(zài)運行,0表示非活動狀態。
關鍵詞:MySQL
閱讀本文後您有什麽感想? 已有 人(rén)給出評價!
- 0
- 0
- 0
- 0
- 0
- 0