MySQL8主从复制
环境介绍
主服务器配置
修改my.cnf配置文件
在/etc/my.cnf 添加如下信息
登录主服务器给从服务器授权
登陆mysql
创建user授权
备注:rootslave就是为从库进行复制配置的账号,1qaz#WSX为密码,从服务器ip即就是192.168.247.101
CREATE USER 'rootslave'@'从服务器ip地址' IDENTIFIED WITH mysql_native_password BY '1qaz#WSX';
grant replication slave on *.* to 'rootslave'@'从服务器IP地址';
grant replication slave on *.* to 'rootslave'@'192.168.247.101';
博主这里@后面写错了,不过不影响,你们写对就行,能运行就跳过下面的解决方法,报错就接着看
报错,不要慌
查看root用户是否有grant_priv 权限
select user ,grant_priv from user ;
发现有该权限,这说明不是权限的问题;继续排查下一个
grant replication slave on *.* to 'rootslave'@'从服务器IP地址';
grant replication slave on *.* to 'rootslave'@'192.168.247.101';
刷新数据使其生效
FLUSH PRIVILEGES;
退出mysql
重启mysql
service mysqld restart
登陆mysql
查看主服务器的bin-log日志文件和position点
show master status;
划重点!!!!!!!!!!!!!!!!!!!!
记号,后面要用,划重点!!!!!!!!!!!!!!!!!!!!
从服务器配置
修改my.cnf配置文件
在/etc/my.cnf 添加如下信息
vim /etc/my.cnf
重启mysql
登录从服务器
连接主服务器
连接 :
ip地址是主服务器的ip(自己修改),rootslave是上面配置的账号,master_password是密码,master_log_file是划重点里面的,忘记的回头看 主服务器查看的文件名字(自己修改),master_log_pos也是划重点里面的(自己修改)
change master to master_host='192.168.247.100',master_user='rootslave',
master_password='123456',master_log_file='java38-bin.000006',master_log_pos=155;
刷新数据使其生效
FLUSH PRIVILEGES;
开启从服务器sql线程
start slave;
查看从服务器状态
show slave status\G;
测试
Navicat ,连接主服务器,创建一张表
打开从服务器就能看到在主服务器创建的表
在主服务器的表中插入数据,就会看到在从服务器中有数据
BUG
在从服务器进行写操作 (插入),主从复制就会停止!
从服务器操作
首先停掉Slave服务: stop slave
主服务器操作
重新查看状态,记住关键字
从服务器操作,一样的部署
完成