李春玲
摘 要:本文介绍了采用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数据库的双机热备方案简单、可行,而且数据同步效率较高,可以为系统运行提供较高的一致性和可靠性。