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