MySQL在Win2008下如何设置双主热备

环境描述

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

猜你喜欢

转载自blog.csdn.net/dumplingoba/article/details/47660519
今日推荐