MySQL5.5半同步功能的安裝步驟
在保證數(shù)據(jù)庫(kù)性能的前提下,怎么保證數(shù)據(jù)的一致性呢?
在MySQL 5.5版本中即支持異步復(fù)制又支持半同步復(fù)制。
1、當(dāng)slave 連接master的時(shí)候,它會(huì)指出它是否支持半同步復(fù)制。
2、當(dāng)master啟用 semisynchronous replication.并且至少有一臺(tái)slave也啟用了該功能,master端的事務(wù)會(huì)被阻塞,并且等到該事務(wù)會(huì)等待其中任何一個(gè)slave接受到該事務(wù),或者超過(guò)等待時(shí)間才會(huì)提交。
3、slave端回復(fù)給master的信息依據(jù)是slave事務(wù)已經(jīng)寫(xiě)入到relay-log并且已經(jīng)刷寫(xiě)到了磁盤(pán)。
4、如果master端等待超時(shí)的話,沒(méi)有任何slave給出該事務(wù)已經(jīng)寫(xiě)入relay-log的信息,那么他會(huì)自動(dòng)轉(zhuǎn)到異步復(fù)制,當(dāng)其中一個(gè)支持異步復(fù)制的slave追趕上了master,那么master會(huì)進(jìn)入到半同步復(fù)制狀態(tài)。
5、半同步復(fù)制必須是兩端都支持。
當(dāng)master的線程處于被阻塞(等待slave端返回的消息時(shí)),并不會(huì)給該會(huì)話session返回任何消息。當(dāng)阻塞結(jié)束的時(shí)候,master會(huì)返回給該session消息。
如果一個(gè)事務(wù)中包含對(duì)非事務(wù)表的修改,在發(fā)生rollback的情況下,master也是會(huì)這些信息寫(xiě)入到binlog上面,并且也會(huì)發(fā)生阻塞,等待slave端寫(xiě)入。
半同步復(fù)制需要在數(shù)據(jù)一致性和性能上作出權(quán)衡。
5.5半同步功能的安裝步驟
1、這個(gè)首先需要5.5支持動(dòng)態(tài)加載模塊:查看變量: have_dynamic_loading是否是yes;
2、基本的復(fù)制架構(gòu)已經(jīng)搭建
3、master端和slave端的模塊是隨著版本發(fā)布的,在master端執(zhí)行:
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
在slave端執(zhí)行:
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
如果在安裝的時(shí)候出現(xiàn)如下錯(cuò)誤,請(qǐng)下載缺失的組件: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)
安裝完成后,還需要設(shè)置變量才能正常啟動(dòng):
SET GLOBAL rpl_semi_sync_master_enabled =1;
SET GLOBAL rpl_semi_sync_master_timeout =N 設(shè)置好超時(shí)時(shí)間,默認(rèn)是10s (有點(diǎn)長(zhǎng)啦)
在slave 端執(zhí)行:
SET GLOBAL rpl_semi_sync_slave_enabled =1
(以上信息都可以寫(xiě)到my.cnf文件中)
這個(gè)時(shí)候復(fù)制還是屬于異步復(fù)制,只有重啟slave或者 重啟 slave I/O線程,才能真正使用半同步復(fù)制功能。
stop slave io_thread;start slave io_thread;
監(jiān)控半同步復(fù)制狀態(tài);
幾個(gè)重要的變量是:
rpl_semi_sync_master_clients 支持和已經(jīng)注冊(cè)半同步復(fù)制的已連接的slave數(shù)量。
rpl_semi_sync_master_status Master的半同步復(fù)制狀態(tài),1是活動(dòng)狀態(tài),0表示非活動(dòng),要么是沒(méi)有啟用該功能,要么以切換至異步復(fù)制狀態(tài)
rpl_semi_sync_slave_status Slave 上的半同步復(fù)制狀態(tài),1,表示已經(jīng)啟用而且I/O線程正在運(yùn)行,0表示非活動(dòng)狀態(tài)。
關(guān)鍵詞:MySQL
閱讀本文后您有什么感想? 已有 人給出評(píng)價(jià)!
- 0
- 0
- 0
- 0
- 0
- 0