MySQL互为主从数据库配置方案

利用MySQL自带的主从复制功能实现互为主从的热备份功能。

1、准备两台搭建完成的mysql,创建结构相同的数据库,服务器A,IP地址为192.168.2.171;服务器B,IP地址为192.168.2.112;

2、修改两台服务器中MySQL的my.ini文件,MySQL5.6以上版本的my.ini文件在C:\ProgramData\MySQL\MySQL Server 5.6目录下,默认是隐藏目录,在文件夹选项中修改显示选项。

2.1、服务器A:

[mysqld]
# for repl
server-id = 1
binlog_checksum=none #如果两个mysql的版本不一样则加入此行
log-bin = mysql-bin #二进制日期文件

2.2、服务器B:

[mysqld]  
# for repl  
server-id = 2  
log-bin = mysql-bin

3、B指定A为主库

3.1、在A创建用户并清除日志

GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.*  TO slave@'%' IDENTIFIED BY '123456';
flush privileges;

3.2、清除残留日志

RESET MASTER;

3.3、查看当前状态,记住file、position列的值,下面要用到

show master status;

 

3.4、在B中停止slave

Stop slave;

3.5、B链接主库A,指定主库的用户名、密码、log_file的文件名和log_pos开始同步的位置,要与3.3中查询出来的保持一致

CHANGE MASTER TO master_host = '192.168.2.171',  
 master_user = 'slave’,  
 master_password = '123456',  
 master_log_file = 'mysql-bin.000002',  
 master_log_pos = 5876;

3.6、开启slave

Start slave;

3.7、查看是否连接成功

Show slave status;
 
slave_lo_running:yes
slave_sql_running:yes

这两个参数都是yes则成功。

 

4、A指定B为主库

4.1、在B创建用户并清除日志

GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.*  TO slave@'%' IDENTIFIED BY '123456';
flush privileges;

4.2、清除残留日志

RESET MASTER;

4.3、查看当前状态,同样记住file、position列的值

show master status;

 

4.4、在A中停止slave

Stop slave;

4.5、A链接主库B,指定主库的用户名、密码、log_file的文件名和log_pos开始同步的位置,要与4.3中查询出来的保持一致

CHANGE MASTER TO master_host = '192.168.2.112',  
 master_user = 'slave’,  
 master_password = '123456',  
 master_log_file = 'mysql-bin.000001',  
 master_log_pos = 378;

4.6、开启slave

Start slave;

4.7、查看是否连接成功

Show slave status;
 
slave_lo_running:yes
slave_sql_running:yes

这两个参数都是yes则成功。

 

5、测试

修改服务器A中的mysql中的修改数据,服务器B中的mysql也会相应的更新,同样在B中修改数据,A中也会更新,成功。


6、问题处理:

查询从库状态slave_lo_running显示connetcting,一般是网络不通(主库的防火墙等),密码不对,pos不对