mysql双主同步

A机:192.168.0.244 已安装mysql5.7
B机:192.168.0.245 已安装mysql5.7
操作系统:centos 7

两台主机都关闭防火墙
systemctl stop firewalld

关闭selinux
vi /etc/sysconfig/selinux
修改SELINUX=disabled

查看selinux
命令:getenforce
需要显示为:disabled

配置主服务器
编辑B机mysql的my.cnf
添加:server-id=1
log-bin=mysql-bin
binlog-do-db = charge_data (指定同步的数据库,如果是多库就新增一行   binlog-do-db = XX  需要同步几个库就对应新增几行 )
binlog-ignore-db = mysql

A机配置
修改my.cnf
添加:server-id=2
log-bin=mysql-bin
binlog-do-db = charge_data (指定同步的数据库,同上)
binlog-ignore-db = mysql

从B机全备一份charge_data 库,到A机进行恢复

在A.B机mysql里创建一个同步使用的用户
create user 'tongbu'@'%' identified by 'tongbu';
授权:
grant all on *.* to 'tongbu'@'%';

然后再AB机上测试新建用户是否可以互相登录
A机:mysql -utongbu -ptongbu -h192.168.0.245
B机:mysql -utongbu -ptongbu -h192.168.0.244

然后重启MySQL服务 service mysqld restart

最后开始配置主从
先设置B主A从
B机上查看二进制日志名和偏移量值
show master status\G
会得到对应的
file:
position:
2个值


然后去A机上配置从连主配置
mysql> stop slave;
    mysql> change master to
      -> master_host='192.168.0.245',
      -> master_user='tongbu',
      -> master_password='tongbu',
      -> master_log_file='XX', #二进制日志文件名
      -> master_log_pos=XXX; #偏移量
    mysql> start slave;

然后输入:
show slave status\G
得到Slave_IO_Running和Slave_SQL_Running的值是否为Yes

如果遇到Slave_SQL_Running: no

就跟着看下面的报错提示

然后处理报错 处理完报错后执行命令
stop slave;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;
show slave status\G

同步失败,报错1236
master库执行:flush logs;
从库执行:
stop slave;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=154  (这个是mysql-bin和MASTER_LOG_pos是上面fllush logs 获得的 )
start slave;
show slave status\G

再设置A主B从
A机mysql输入
show master status\G
会得到对应的
file:
position:
2个值
然后去B机上配置从连主配置
mysql> stop slave;
    mysql> change master to
      -> master_host='192.168.0.244',
      -> master_user='tongbu',
      -> master_password='tongbu',
      -> master_log_file='XX',
      -> master_log_pos=XXX;
    mysql> start slave;
然后输入:
show slave status\G
得到Slave_IO_Running和Slave_SQL_Running的值是否为Yes

以上正常操作完成 不报错的话 就已经可以主主同步了

 

posted @ 2020-08-25 10:00  有鹏自远方来  阅读(729)  评论(0)    收藏  举报