MySql主从复制实战及排坑说明

1、配置MySQL主库

在Linux环境下安装好MySQL后(安装请参考原创:Linux环境下,安装jdk、tomcat、mysql、redis以及项目部署),
修改MySQL主库的配置文件 /etc/my.cnf

vim /etc/my.conf

在my.conf中添加如下配置:

[mysqld]
log-bin=mysql-bin  #必须启用二进制日志
server-id=100      # MySQL服务器的唯一id 

注:服务器的id随意配置,但一定要能唯一地标识一个MySQL服务
在这里插入图片描述
修改配置后,需要重启MySQL服务并登录:

systemctl restart mysqld
mysql -uroot -p123456

主库授予从库可以访问的配置信息,用户名为cloneRoot,密码为Root@123456

grant replication slave on *.* to 'cloneRoot'@'%' identified by 'Root@123456';
# 主库执行该命令后,一定不要再执行其他命令,避免后续从库 从主库获取授权时出现参数不一致的情况
show master status;

注意:给从库授权的密码不能太简单,不然会报错:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements,或者执行如下两个设置参数的命令:

# 设置密码的安全等级和密码的最短有效长度
set global validate_password_policy=LOW
set global validate_password_length=4;

在这里插入图片描述

2、配置从库

同对主库的操作,来修改MySQL从库的配置文件 /etc/my.cnf,

[mysqld]
server-id=101      # MySQL服务器的唯一id 

在这里插入图片描述
重启从库的mysql服务,并登录mysql(我配置的密码为123456):

systemctl restart mysqld
mysql -uroot -p123456
change master to master_host='192.168.40.144',master_user='cloneRoot',master_password='Root@123456',master_log_file='mysql-bin.000001',master_log_pos=442;

注意:master_user、master_password是前面主库执行grant replication slave on *.* to 'cloneRoot'@'%' identified by 'Root@123456';命令来授予从库的,master_log_file、master_log_pos是主库执行show master status;命令得到。
在这里插入图片描述
如上,从库的配置就已完成,可以在从库通过show slave status; 命令来查看从库信息。在这里插入图片描述
显示的从库信息看起来比较凌乱,可以复制粘贴到Navicat或Sqlyog等工具中查看。
在这里插入图片描述

3、排错说明

从库所在虚拟机 我是直接由 主库所在的虚拟机克隆而来的,因此,会出现从库和主库的mysql服务UUID相同的错误情况。
在这里插入图片描述
也还可以分别在从库和主库输入show variables like '%server_uuid%';命令来查看。
在这里插入图片描述

4、解决办法

退出mysql的命令行,修改mysql从库服务器的uuuid的值,需要保证本主库和主库及其他从库的uuid不一样。

# 查看auto.cnf文件的位置,找到并编辑auto.cnf
find -name auto.cnf
vim ./var/lib/mysql/auto.cnf

在这里插入图片描述
再重启MySQL服务,mysql -uroot -p123456登录查看server_uuid
如果主从库的server_uuid还是一样,可以考虑下面的方案:
分别在从库和主库所在的虚拟机中,删除/var/lib/mysql/auto.cnf,命令如下:

rm -rf /var/lib/mysql/auto.cnf

如此,server_uuid就不一样了,

在这里插入图片描述
在这里插入图片描述
并且可以通过show slave status\G 可以看到
Slave_IO_RunningSlave_SQL_Running的值 都是yes,如此,就可以进行主从复制有关操作了(即修改主库,从库也会跟着修改,保持和主库数据一致)。

解决方案参考:主从复制报错Fatal error:The slave I/O thread stops because master and slave have equal MySQL server UUIDs;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值