1、先准备两台虚拟机
若只有一台,可以按照一下文章复制一台出来:
https://jingyan.baidu.com/article/fc07f98928e35053fee51931.html
复制出一台虚拟机后,还需要更改虚拟机的默认ip,改法参考如下:
VMWare虚拟机设置固定ip_vm虚拟机网络ip地址怎么修改-CSDN博客
2、修改主机mysql的配置
由于主从复制是基于二进制日志,所以mysql的master节点需要开启二进制日志:
vim /etc/my.cof
添加如下两行
log-bin=mysql-bin #启 动 二 进 制 日 志
server-id=100 #服 务 器 唯 一 标 识 , 必 须 唯 一
保存后执行 systemctl restart mysql3306.service 重启mysql
3、在master创建slave用户并授予权限
grant replication SLAVE ON *.* TO 'xiaoming'@'%' IDENTIFIED BY '123456';
执行sql,查看日志文件名称和位置(做完此操作后就不要再执行其他sql了):
show MASTER STATUS
4、设置slave服务器id
vim /etc/my.cnf
设置完后重启slave节点
5、在slave节点执行sql,设置master相关信息
CHANGE MASTER TO
master_host='192.168.56.201', -- master所在主机ip
master_user='xiaoming', -- master创建的用户名
master_password='123456', -- 密码
master_log_file='binlog.000066', -- master节点二进制日志文件名
master_log_pos=434; -- master节点二进制文件位置
start slave; -- 启动从节点
6、slave执行sql,查看salve状态
show slave STATUS
发现salve的io线程没有运行起来
原因:由于salve所在虚拟机是直接克隆出来的,导致主从数据库的uuid相同,解决方法参看如下
https://blog.csdn.net/qq_54217349/article/details/126501053
按照上面文章操作后,发现还是不行,salve的io还是没跑起来,继续排查:
参看文章:
https://zhuanlan.zhihu.com/p/688790850
在salve上执行sql,查看错误日文件的位置,查到日志文件位置后在salve服务器上查看改日志文件
SHOW VARIABLES LIKE '%log_error%';
发现还是主从mysql的server_id重复了,分别在主从节点执行sql,发现确实是一样的,可能是由于slave虚拟机是克隆出来导致的;
show variables like 'server_id';
所以得修改slave的server id,在slave执行sql
set global server_id=2;
执行完后重启slave,发现成功了