环境说明
注意:MysqL的版本最好一致
mysql 5.6以后的复制引入了uuid的概念,各个复制结构中的server_uuid得保证不一样,但是查看到直接copy data文件夹后server_uuid是相同的,命令如下:
show variables like ‘%server_uuid%’;
- - 若是两台虚拟机的uuid是相同的
解决办法:找到/var/lib/mysql文件夹下的auto.cnf文件,修改里面的uuid值,保证各个db的uuid 不一样,然后重启db即可
systemctl restart mysqld.service
复制的基本原则:
修改master配置 vim /etc/my.conf
[mysqld]
#开启二进制日志
log-bin=mysql-bin
#设置server-id,建议使用ip最后3位
server-id=28
[mysqld]
#开启中继日志
relay-log=mysql-relay
#设置server-id,建议使用ip最后3位
server-id=29
create user 'copy'@'%' identified with mysql_native_password by ' your password ';
GRANT REPLICATION SLAVE ON *.* TO ‘copy'@‘%‘;
flush privileges; 刷新授权表信息
--查询master的状态
show master status\G;
记录上图结果中File和Position的值
三 、告知从服务器二进制文件名与位置(从服务器操作)
这里要根据上面主服务器的状态来填写,不要直接用下面的SQL,需要根据实际值修改
CHANGE MASTER TO
master_host = ‘192.168.42.28’, #主库的IP地址
master_user = ‘copy’, #在主库上创建的复制账号
master_password = ‘Nebula@123’, #在主库上创建的复制账号密码
master_log_file = ‘mysql-bin.000001’, #开始复制的二进制文件名(从主库查询结果中获取)
master_log_pos = 817; #开始复制的二进制文件位置(从主库查询结果中获取)
四 、查看从服务器状态
//开启复制
start slave;
//查看主从复制是否配置成功
SHOW SLAVE STATUS\G当看到上图红色三个才表明状态正常。
五 、主从复制服务搭建完成,即在主服务器上做SQL操作,会同步到从服务器。