mysql配置主从同步
主从同步数据库的版本保持一致,不然会出现莫名其妙的问题
Master主库配置
1、配置master数据库
修改主库的配置文件内容
[mysqld]
log-bin=mysql-bin
server-id=2
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
binlog-do-db=test
这里的server-id
用于标识唯一的数据库,在从库必须设置为不同的值。
binlog-ignore-db
:表示同步的时候忽略的数据库
binlog-do-db
:指定需要同步的数据库
2、配置完成重启mysql
systemctl restart mysql
3、进入mysql,mysql -uroot -p,回车,输入mysql密码进入
mysql -uroot -p
4、赋予从库权限账号
允许用户在主库上读取日志,赋予192.168.0.4也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。(注意此处的密码为设置的从库连接主库时的密码,踩过坑)
grant FILE on *.* to 'root'@'192.168.0.4' identified by 'root';
grant replication slave on *.* to 'root'@'192.168.0.4' identified by 'root';
flush privileges;
此处的IP和用户是从库的数据库IP和用户
4、重启mysql,登录mysql,查看主库信息
show master status;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jzwy2vEA-1642411770354)(media/16424090654997/16424112308038.jpg)]
如果该命令没数据,说明上面配置有误。
File是同步会使用到的binlog文件,Position是同步的时候也要用到的。
Slave节点配置
1、修改/etc/my.cnf
log-bin=mysql-bin
server-id=3
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
replicate-do-db=test
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60
2、指定host-ip
在mysql5.6之后的版本中不需要指定
而且在5.6之前的版本设置下面的内容的话会报错
master-host=192.168.1.1 #Master的主机IP
master-user=root
master-password=mysql password #Master的MySQL密码
3、修改保存后重启mysql
systemctl restart mysql
进入Slave的mysql控制台,执行下面操作(此处的密码为上边在主库设置的连接密码,应注意):
stop slave;
change master to master_host='192.168.0.68',master_user='root',master_password='root',master_log_file='mysql-bin.000004', master_log_pos=28125;
start slave;
注意:上面的master_log_file是在Master中show master status显示的File,
而master_log_pos是在Master中show master status显示的Position。
然后可以通过show slave status查看配置信息。
如果没有同步成功,请查看show slave status中的position和file是否和master中的对应了。