centos7.9 配置mysql主从同步

一.环境

服务器a:192.168.0.10
服务器b:192.168.0.21
Mysql版本:8.0.33
System OS:CentOS Linux release 7.9.2009 (Core)

二.创建同步用户

连接服务器a和服务器b上的mysql,分别建立一个同步用户: 

mysql>create user slave@'%' identified by '123456';
mysql>GRANT ALL PRIVILEGES ON *.* TO 'slave'@'%'WITH GRANT OPTION;
//刷新
mysql>flush privileges;

三.配置/etc/my.cnf

服务器a下的  [mysqld] ,注意是[mysqld],而不是[mysql]

#主从集群-主
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
log_slave_updates=ON
log_bin=binlog

服务器b下的  [mysqld] ,注意是[mysqld],而不是[mysql]

#主从集群-从1
server_id=2
gtid_mode=ON
enforce_gtid_consistency=ON
log_slave_updates=ON
log_bin=binlog

然后分别重启服务器a和服务器b的mysql

systemctl restart mysqld.service

四.主从配置

 1.修改主从配置录服务器a的Mysql数据库,执行下面SQL,记录下结果中File和Position的值
show master status;

注:上面SQL的作用是查看Master的状态,执行完此SQL后不要再执行任何操作

2.登录服务器b的Mysql数据库,执行下面SQL
#执行前先停下slave
stop slave;

change master to
master_host='192.168.0.10',master_user='slave',master_password='123456',
master_log_file='binlog.000008',master_log_pos=592;

#执行后启动slave
start slave;

#输出会很乱
show slave status;
#这样就竖着输出,不会乱
show slave status\G;

**两个yes则表示成功配置主从复制,Connection和No都是配置有问题

五.测试主从复制

我们分别用Navicat连接了主从的mysql,然后我现在往主机添加一个数据库,刷新一下备机,ok成功,主从复制配置完成

六.如果同步不了,如何排错?


如果主从数据库同步不了,就从库执行下 show slave status\G;如果是Slave_IO_Running: No,那么,很可能是主从库UUID重复了,或者是防火墙端口没开通,(这些上面都有讲到);
如果是 Slave_SQL_Running: No,那么我们可以通过跳过错误和手动同步来解决。

Slave_SQL_Running: No 问题分析
1.程序可能在slave上进行了写操作
2.也可能是slave机器重启后,事务回滚造成的.

备机上每写一次,主机master的pos都会变一次,有时候同步没成功,就会导致主从机pos值不一样,这时候有两种解决方法,一种是跳过这个错误,一种是手动同步pos值

解决办法一:跳过这个错误,
 set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;就是跳过一次的意思

解决办法:
mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave ;

解决办法二:手动同步pos值

进入master
到主服务器上查看主机状态:
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| binlog.000008 |     2844 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

然后进到slave
首先停掉Slave服务: stop slave;

然后到slave服务器上执行手动同步:
mysql>change master to
master_host='192.168.0.10',master_user='slave',master_password='123456',
master_log_file='binlog.000008',master_log_pos=2844;

再打开Slave服务: start slave;



然后发现又是两个yes了,搞定!

下次整个mysql双主双写或双主单写吧

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值