李春玲
摘 要:本文介紹了采用MySQL數(shù)據(jù)庫自帶的Replication功能完成雙機(jī)熱備份的方案,測試結(jié)果顯示該方案數(shù)據(jù)同步效率較高,可以為系統(tǒng)運(yùn)行提供較高的一致性和可靠性。
關(guān)鍵詞:MySQL;Replication;雙機(jī)熱備份
1 前言
MySQL數(shù)據(jù)庫以其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),通常被中小型企業(yè)所青睞。但隨著市場競爭的日趨激烈,各大公司推行成本戰(zhàn)略,對一些業(yè)務(wù)數(shù)據(jù)量較小的項(xiàng)目也開始使用MySQL數(shù)據(jù)庫,從提高系統(tǒng)運(yùn)行可靠性的角度考慮,部署MySQL數(shù)據(jù)庫雙機(jī)是必要的。
2 Replication功能介紹
Replication是一個(gè)異步的復(fù)制,從一個(gè)MySQL Instance(稱之為Master)復(fù)制到另一個(gè)MySQL Instance(稱之Slave)。基于該功能,可以實(shí)現(xiàn)MySQL數(shù)據(jù)庫的雙機(jī)熱備份。
Replication實(shí)現(xiàn)整個(gè)復(fù)制過程實(shí)際上就是Slave從Master端獲取該日志,然后再在自己身上完全順序的執(zhí)行日志中所記錄的各種操作。要實(shí)施復(fù)制,首先必須打開Master端的binary log(bin-log)功能。
3 雙機(jī)熱備實(shí)施
本文的安裝及測試過程使用Microsoft Virtual PC創(chuàng)建了兩臺虛擬機(jī),分別安裝及配置軟件環(huán)境如表1:
MySQL雙機(jī)熱備安裝配置步驟如下:
1、在主、備機(jī)上安裝操作系統(tǒng)Windows Server 2003 Enterprise Edition(SP2),然后安裝MySQL 5.1,并創(chuàng)建測試數(shù)據(jù)庫testdb,確保數(shù)據(jù)庫能夠正常訪問。
2、停止主、備機(jī)的MySQL數(shù)據(jù)庫,把主機(jī)的data目錄拷貝到備機(jī)data目錄覆蓋,實(shí)現(xiàn)第一次冷備。
(1)打開主機(jī)MySQL配置文件my.ini,在[mysqld]配置項(xiàng)中加入下面配置:
server-id=1
log-bin=“C:\MySQL\log\MySQL”
binlog-do-db=testdb
(2)啟動數(shù)據(jù)庫,通過show master status檢查主機(jī)狀態(tài)。
(3)再打開主機(jī)MySQL配置文件my.ini,在[mysqld]配置項(xiàng)中加入下面配置:
server-id=2
master-host=192.168.1.100
master-user=root
master-password=password
master-port=3306
master-connect-retry=60
replicate-do-db=testdb
(4)啟動數(shù)據(jù)庫,通過show slave status檢查備機(jī)狀態(tài)。
3、拷貝備機(jī)的my.ini至主機(jī),并修改名稱為my.ini.slave;拷貝主機(jī)的my.ini至備機(jī),并修改名稱為my.ini.master。
4、編寫以下內(nèi)容并保存為Switch to Master.bat和Switch to Slave.bat。
Switch to Master.bat:
net stop MySQL
rename C:\MySQL\MySQL Server 5.1\my.ini my.ini.slave
rename C:\MySQL\MySQL Server 5.1\my.ini.master my.ini
del C:\MySQL\MySQL Server 5.1\master.info
netsh interface ip set address name="本地連接" source=static addr=192.168.1.101 mask=255.255.255.0 gateway=192.168.1.1 gwmetric=1
net start MySQL
Switch to Slave.bat:
net stop MySQL
rename C:\MySQL\MySQL Server 5.1\my.ini my.ini.master
rename C:\MySQL\MySQL Server 5.1\my.ini.slave my.ini
del C:\MySQL\MySQL Server 5.1\master.info
netsh interface ip set address name="本地連接" source=static addr=192.168.1.100 mask=255.255.255.0 gateway=192.168.1.1 gwmetric=1
net start MySQL
然后拷貝Switch to Master.bat和Switch to Slave.bat兩個(gè)文件至備、主機(jī),并創(chuàng)建快捷方式至桌面,方便發(fā)生意外時(shí)快速切換主備機(jī)。
至此,完成雙機(jī)系統(tǒng)安裝配置。
4 雙機(jī)熱備測試
1、數(shù)據(jù)同步測試
(1) 在Master的testdb中創(chuàng)建表testtable,然后在Slave上查詢數(shù)據(jù)庫,表已同步創(chuàng)建;
(2) 在Master的testtable插入數(shù)據(jù),然后在Slave上查詢表testtable,數(shù)據(jù)已同步插入;
(3) 刪除Master的testtable數(shù)據(jù),然后在Slave上查詢表testtable,數(shù)據(jù)已同步刪除;
(4) 刪除Master的表testtable,然后在Slave上查詢數(shù)據(jù)庫,表已同步刪除。
2.主備切換測試
(1)分別在備、主機(jī)上執(zhí)行Switch to Master.bat和Switch to Slave.bat,然后用show master status和show slave status查看狀態(tài);
(2)重復(fù)步驟1中的數(shù)據(jù)同步測試;
在測試中發(fā)現(xiàn)該方案數(shù)據(jù)同步效率是比較高的,基本上異步同步時(shí)延保持在秒級,還是可以提供較高的一致性和可靠性。
5 總結(jié)
通過MySQL自帶的Replication功能實(shí)施MySQL數(shù)據(jù)庫的雙機(jī)熱備方案簡單、可行,而且數(shù)據(jù)同步效率較高,可以為系統(tǒng)運(yùn)行提供較高的一致性和可靠性。