环境描述
1)服务器
主机A:192.168.1.6
主机B:192.168.1.7
2)系统环境:windows Server 2008R2 Standard 64位
3)MySQL版本:mysql-5.5.43-winx64
--------------------------------------------------------------------------------------------------------------------
实验开始:
步骤1、创建备份用户
#在主机A上面创建专门用于备份的用户,并且只允许B登陆.
mysql>grant replication slave,file on *.* to 'repl1'@'192.168.1.7' identified by '123456';
mysql>flush privileges; //刷新数据库
#测试账户是否创建成功(在B服务器)
mysql.exe -h192.168.1.6 -urepl1 -p123456
#同理在主机B创建用户
mysql>grant replication slave,file on *.* to 'repl2'@'192.168.1.6' identified by '123456';
mysql>flush privileges;
#测试账户是否创建成功(在A服务器)
mysql.exe -h192.168.1.7 -urepl2 -p123456
备注:若出现以下错误,请尝试在对端的服务器将密码修改后重新尝试
ERROR 1045 (28000): Access denied for user 'repl1'@'192.168.1.7' (using password: YES)
密码修改命令:mysql->update user set password=password("12345") where user="repl1";
步骤2、配置文件:(在两个机器上的my.ini里面配置)
注意:修改文件前,先运行下面命令再关闭MySQL服务:(防止文件修改后无法用root登陆本地)
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'runa#2013' WITH GRANT OPTION;
#A主机
user = mysql
log-bin=mysql-bin
server-id = 1 //唯一的ID
binlog-do-db=runarcc //指定本地数据库复制
binlog-do-db=runarcc1 //添加多个数据库复制时可以另起一行添加
binlog-ignore-db=mysql //指定本地忽略哪些数据库复制
replicate-do-db=runarcc //指定B主机需要复制的数据库
replicate-do-db=runarcc1
replicate-ignore-db=mysql //指定B主机忽略复制的数据库
log-slave-updates //中继日志执行后,这些变化是否需要计入到自己的binarylog.当B主机需要作为另外一个服务器的Master时需要打开,就是双主互相备份.
slave-skip-errors=all
skip-name-resolve
sync_binlog=1
#因为每台数据库服务器都可能在同一个表中插入数据,如果表有一个自动增长的主键,那么就会在多服务器上出现主键冲突。解决这个问题的办法就是让每个数据库的自增主键不连续.我的情况是需要2台服务器做备份,所以auto_increment_increment设为2.而auto_increment_offset=1表示这台服务器的序号.从1开始不超过2.
auto_increment_increment=2
auto_increment_offset=1
#B主机
user = mysql
log-bin=mysql-bin
server-id = 2
binlog-do-db=runarcc
binlog-do-db=runarcc1
binlog-ignore-db=mysql
replicate-do-db=runarcc
replicate-do-db=runarcc1
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
skip-name-resolve
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=2
步骤3、上述配置完成后,重新启动MySQL
#在各自机器上执行CHANGE MASTER TO命令
# A change master to:
mysql>change master to
master_host='192.168.1.7',
master_user='repl2',
master_password='123456',
master_log_file='mysql-bin.000005',
master_log_pos=107;
注意:最后2个值要通过show master status;在对方机器查看
mysql> start slave; //开始slave进程
# B change master to:
mysql> change master to
master_host='192.168.1.6',
master_user='repl1',
master_password='123456',
master_log_file='mysql-bin.000006',
master_log_pos=107;
mysql> start slave;
步骤4、上述设置完成后,查看slave状态.红色标记部分2个显示YES状态表示正常.
mysql>show slave status\G
步骤6、测试A,B的数据库是否完成同步.
------------------------------------------------------------------------------------------------------------------------
以下为参考的他人博客
http://www.cnblogs.com/kristain/articles/4142970.html