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不对