MySQL服務(wù)器也支持鏡像,大提高數(shù)據(jù)的安全性和穩(wěn)定性。下面介紹一下MySQL數(shù)據(jù)中的鏡像機(jī)制:
在鏡像關(guān)系中,一個MySQL服務(wù)器扮演主服務(wù)器角色,另外一個或多個服務(wù)器扮演從服務(wù)器角色,從服務(wù)器中的數(shù)據(jù)和主服務(wù)器中的數(shù)據(jù)完全一樣。
在鏡像建立之前,主服務(wù)器和從服務(wù)器必須進(jìn)行一次完全同步。同步之后,在主服務(wù)器上所做的操作將會在從服務(wù)器上再實現(xiàn),主服務(wù)器上的操作不是直接作用于從服務(wù)器上的。
負(fù)責(zé)在主、從服務(wù)器上傳輸各種修改動作的媒介是主服務(wù)器上的二進(jìn)制變更日志,該日志記錄著主服務(wù)器上所有的操作動作。因此,主服務(wù)器必須激活二進(jìn)制日志功能。
從服務(wù)器必須有足夠的權(quán)限從主服務(wù)器上接收二進(jìn)制日志文件。鏡像協(xié)調(diào)信息記錄從服務(wù)器的進(jìn)展情況,包括,從服務(wù)器正在讀取的二進(jìn)制變更日志文件名和它在該文件里的當(dāng)前讀寫位置。
每個主服務(wù)器可以有多個從服務(wù)器,但每個從服務(wù)器只能有一個主服務(wù)器。但MySQL服務(wù)器允許把一個從服務(wù)器作為另一個從服務(wù)器的主服務(wù)器,這樣就可創(chuàng)建一個鏡像服務(wù)器鏈。
鏡像機(jī)制在MySQL中還是一個新生事物,最早實現(xiàn)于3.23.15版。各版本間的鏡像能力有差異,一般來說,建議大家盡量使用最新的版本,下面列舉了不同版本的MySQL服務(wù)器在鏡像機(jī)制方面的兼容規(guī)則:
3.23.x系統(tǒng)版本的從服務(wù)器不能與4.x系統(tǒng)版本的主服務(wù)器通信。
4.0.0版本的從服務(wù)器只能與4.0.0版本的主服務(wù)器通信。
4.0.1或更高版本的從服務(wù)器既能與3.23.x系統(tǒng)版本的主服務(wù)器通信,也能與4.x系統(tǒng)版本的主服務(wù)器通信。但后一種情況要求主服務(wù)器的版本號等于或大于從服務(wù)器的版本號。
一般來說,建議遵循以下原則:
要盡可能地讓主服務(wù)器和從服務(wù)器都使用同一版本系統(tǒng)。
在選定系統(tǒng)后,盡量使用該系統(tǒng)的最新版本。
建立主從鏡像服務(wù)器的步驟:
確定主從服務(wù)器的鏡像ID號,主從服務(wù)器的ID號不能相同。在啟動主從服務(wù)器時,用--server_id啟動選項給出其ID。
從服務(wù)器必須在主服務(wù)器上有一個具備足夠的權(quán)限的帳戶,從服務(wù)器將使用該帳戶去連接主服務(wù)器并請求主服務(wù)器把二進(jìn)制變更日志發(fā)送給它。可用以下命令創(chuàng)建這個帳戶:
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'slave_host' IDENTIFIED BY 'slave_pass';
#REPLICATION權(quán)限只MySQL4.0.2后版本,之前的版本請用FILE權(quán)限。
把主服務(wù)器上的數(shù)據(jù)庫文件拷貝到從服務(wù)器上完成最初同步工作。也可用備份后再加載的方法。在MySQL 4.0.0及以后版本里,還可用在主服務(wù)器上運行LOAD DATA FROM MASTER語句來建立從服務(wù)器。但有約束條件:
數(shù)據(jù)表要全部是MyISAM表
為發(fā)出這條指令而在連接從服務(wù)器時使用的帳戶必須有SUPER權(quán)限。
從服務(wù)器用來連接主服務(wù)器的帳戶必須具備RELOAD和SUPER權(quán)限。注意,這是一個主服務(wù)器上的帳戶,而用來發(fā)出LOAD DATA FROM MASTER語句的帳戶是一個從服務(wù)器上的帳戶。
LOAD DATA FROM MASTER語句在執(zhí)行時需申請一個全局性的讀操作鎖,這個鎖在語句執(zhí)行期間阻塞主服務(wù)器上一切的寫操作。
無論用哪種方法同步數(shù)據(jù),都要確保在開始制作備份到給主服務(wù)器重新配置好二進(jìn)制日志功能這段時間,不能在主服務(wù)器上發(fā)生修改操作。
關(guān)閉服務(wù)器。
對主服務(wù)器的配置進(jìn)行修改--把它的鏡像ID告訴它并激活其二進(jìn)制日志功能。在主服務(wù)器要讀取的選項文件內(nèi)增加以下內(nèi)容:
[mysqld]
server-id=master_server_id
log-bin=binlog_name
重新啟動主服務(wù)器,從現(xiàn)在開始,它將把客戶對數(shù)據(jù)庫的修改操作記錄到二進(jìn)制變更日志里。如果在此之前已經(jīng)激活了二進(jìn)制日志功能,則要在重啟前把二進(jìn)制變更日志備份下來,在重啟后再發(fā)一條RESET MASTER語句去清除現(xiàn)有的二進(jìn)制變更日志。
關(guān)閉從服務(wù)器。
對從服務(wù)器進(jìn)行配置,使它知道自已的鏡像ID,到哪里去找主服務(wù)器以及如何去連接主服務(wù)器。配置內(nèi)容如下:
[mysqld]
server-id=slave_server_id
master-host=master_host
master-user=slave_user #在主服務(wù)器上為從服務(wù)器建立的帳戶
msater-password=slave_pass #在主服務(wù)器上為從服務(wù)器建立的帳戶的密碼
master-connet-retry=30 #設(shè)置連接重試間隔,默認(rèn)為60秒
master-retry-count=100000 #設(shè)置重試次數(shù),默認(rèn)為86400次
注:最后兩個選項在網(wǎng)絡(luò)連接不可靠時設(shè)置
重新啟動從服務(wù)器。從服務(wù)器用兩個信息源來確定它自已在鏡像工作中的進(jìn)度位置:一個是數(shù)據(jù)目錄中的master.info文件,另一個是啟動選項所給定的配置信息。第一次啟動從服務(wù)器時,master.info文件不存在,從服務(wù)器會根據(jù)選項文件中給出的各種master-xxx選項值去連接主服務(wù)器。一旦連接成功,從服務(wù)器會創(chuàng)建一個master.info文件以保存各種連接參數(shù)和它自已的鏡像工作狀態(tài)。如果以后再重啟從服務(wù)器,從服務(wù)器會優(yōu)先讀取該文件,而不是選項文件。所以如果你修改了選項文件的內(nèi)容,想該選項生效就要刪除master.info文件并重啟從服務(wù)器。
以上步驟是鏡像所有數(shù)據(jù)庫的操作過程,如果我們想把mysql權(quán)限數(shù)據(jù)保留在主服務(wù)器上,排除在鏡像機(jī)制外的話,可用在選項文件的[mysqld]中加入--binlog-ignore-db=mysql選項,這樣,mysql數(shù)據(jù)庫上的操作就不會記錄在二進(jìn)制變更日志里。如要排除其它數(shù)據(jù)庫,只要增加多幾個該選項即可。
通過以下幾個命令可監(jiān)控和管理主從服務(wù)器:
SLAVE STOP,SLAVE START用于掛起來恢復(fù)從服務(wù)器上鏡像,如當(dāng)備份時,可用該語句讓從服務(wù)器暫時停止鏡像活動。
SHOW SLAVE STATUS,在從服務(wù)器上查看其鏡像協(xié)調(diào)信息,這些信息可以用來判斷哪些二進(jìn)制變更日志已經(jīng)不再使用。
PURGE MASTER,在主服務(wù)器上對二進(jìn)制變更日志進(jìn)行失效處理。刪除所有從服務(wù)器都不再使用的二進(jìn)制變更日志。
CHANGE MASTER,在從服務(wù)器上修改鏡像參數(shù)。如正在讀取主服務(wù)器上哪個二進(jìn)制變更日志,正在寫哪個中繼日志文件等。
在MySQL4.0.2之后版本中,鏡像機(jī)制中的從服務(wù)器由兩個內(nèi)部線程組成:
一個叫“I/O線程”,負(fù)責(zé)與主服務(wù)器通信,請求主服務(wù)器發(fā)送二進(jìn)制變更日志,并把接收到的數(shù)據(jù)修改命令寫入某個中繼日志文件;用SLAVE STOP IO_THREAD或SLAVE START IO_THREAD可掛起或恢復(fù)該線程。
另一個叫“SQL線程”,負(fù)責(zé)從中繼日志中讀取數(shù)據(jù)修改命令并執(zhí)行。同理,用SLAVE STOP SQL_THREAD或SLAVE START SQL_THREAD可掛起或恢復(fù)該線程。
中繼日志文件默認(rèn)的文件為hostname-relay-bin.nnn和hostname-relay-bin.index。可用從服務(wù)器的--relay-log和--relay-log-index選項修改。在從服務(wù)器中還有一個relay-log.info中繼信息文件,可用--relay-log-info-file啟動選項修改文件名。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com