准备工作
1、 把需要同步的数据库实例从主数据库备份出来,然后手动导入从数据库,以保证数据库同步的时候主从数据库是一致的。
2、 配置主数据库所在操作系统的防火墙,开放数据库访问端口,默认端口3306。
准备服务器
由于Mysql不同版本之间的(二进制日志)binlog格式可能会不太一样,因此最好的搭配组合是主(Master)服务器的Mysql版本和从(Slave)服务器版本相同或者更低,主服务器的版本肯定不能高于从服务器版本。
设置方法:
a. 范例环境:
(1).操作系统: windows 7 professional
(2).MySQL版本: mysql Ver 14.14 Distrib 5.5.37, for Win32 (x86)
(3).服务器A的IP: 172.17.17.131
服务器B的IP: 172.17.17.132
b. 增加一个用户账号(backup)作为同步用户账号.
A: mysql> Grant all on *.* to [email protected]‘172.17.17.132‘ identified by ‘1234‘;
B: mysql> Grant all on *.* to [email protected]‘172.17.17.131‘ identified by ‘1234‘;
注: (1). mysql> Grant 权限 on *.* to 用户账号@‘允许访问的IP‘ identified by ‘用户密码‘; 可以给部分权限:Grant replication slave on *.* to [email protected]‘172.17.17.131‘ identified by ‘1234‘;
(2). 4.0.2以前的版本, 因为不支持replication slave, 要改为 file,例如下面的语句:
mysql> Grant file on *.* to [email protected]‘192.168.1.15‘ identified by ‘1234‘;
c.修改MySQL配置文件my.ini.
服务器A:
server-id=1
log-bin=backup-master #设置需要记录log 可以设置log-bin=backuplog 设置日志文件的名称
#日志文件在mysql数据库文件夹根目录下,mysql将建立不同扩展名,文件名为backup-master的几个日志文件。
replicate-do-db=mcs #指定需要日志的数据库
服务器B:
server-id=2
log-bin=backup-slave #设置需要记录log 可以设置log-bin=backup-slave 设置日志文件的名称
replicate-do-db=mcs #告诉slave只做news数据库的更新
#在mysql数据库文件夹根目录下,会自动生成一个master.info的日志文件,
#获取master服务器数据库的更新信息。注:修改完成后,进入计算机服务,重启数据库服务
d.查看主服务器master信息(这里做的是双机热备,互为主备).
服务器A:
1、cmd进入DOS窗口
2、进入数据库安装地址:cd c:\bohui\mcs\mysql\bin
3、进入数据库:mysql -hlocalhost -uroot -p123456 (注:此处使用的是root用户,密码为123456)
4、查看本服务器数据库master信息:
show master status;
记录File的值“backup-slaver.000012”,和Position值“4881”。改值会在服务器B使用。
服务器B:
1、cmd进入DOS窗口
2、进入数据库安装地址:cd c:\bohui\mcs\mysql\bin
3、进入数据库:mysql -hlocalhost -uroot -p123456 (注:此处使用的是root用户,密码为123456)
4、查看本服务器数据库master信息:
show master status;
记录File的值“backup-master.000011”,和Position值“1811363”。该值会在服务器A使用。
e.修改查看从服务器slave信息(这里做的是双机热备,互为主备).
再次进入服务器A:
1、在DOS窗口进入数据库:
Mysql>slave stop; #先停止slave服务 然后执行
Mysql>change master to
>master_host=‘172.17.17.132‘,
>master_user=‘backup‘,
>master_password=‘1234‘,
>master_log_file=‘ backup-master-000011‘ , #上面服务器B查询的值 >master_log_pos=1811363; #上面服务器B查询的值有用吧
Mysql>slave start;
2、查看服务器B>A的同步状态:
Mysql>show slave status\G;
其中下面两项都必须为yes。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
再次进入服务器B:
1、在DOS窗口进入数据库:
Mysql>slave stop; #先停止slave服务 然后执行
Mysql>change master to
>master_host=‘172.17.17.131‘,
>master_user=‘backup‘,
>master_password=‘1234‘,
>master_log_file=‘ backup-slaver.000012‘ , #上面服务器A查询的值
>master_log_pos=4881; #上面服务器A查询的值有用吧
Mysql>slave start;
2、查看服务器A>B的同步状态:
Mysql>show slave status\G; 其中下面两项都必须为yes。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
至此,MySQL双机热备已经完成。