前言:
上一篇文章我们在3台虚拟机安装好Mysql,但是安装好Mysql后,并不能达到主从节点同步的目的,现在让我们配置3台节点之间的主从同步。
没有安装Mysql的可以参考上一篇博客:Mysql安装教程
Mysql主从配置
机器准备
在三台机器上按照Msql安装教程安装完Mysql5.7,三台机器的ip分别为:
192.168.88.161 主
192.168.88.162 从
192.168.88.163 从
在三台机器上分别创建2个数据库,分别为cool和cool2,字符编码为utf8:
CREATE DATABASE `cool` CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE `cool2` CHARACTER SET utf8 COLLATE utf8_general_ci;
master 节点配置
在192.168.88.161机器上配置
vim /etc/my.inc
#数据库服务的唯一标识
server-id=1
#开启binlog二进制文件
log-bin=mysql-bin
sync_binlog=0
#日志保留7天
expire_logs_days=7
#指定cool,cool2开启binlog
binlog-do-db=cool
binlog-do-db=cool2
binlog-ignore-db=information_schema
binlog-ignore-db=sys
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
重启mysql
service mysql restart
重启成功后,登录mysql。
mysql -uroot -p123456
赋予从库权限账号,允许用户在主库上读取日志,赋予192.168.88.162和192.168.88.163也就是Slave机器有File权限,
只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。
grant FILE on *.* to 'root'@'192.168.88.162' identified by '123456';
grant replication slave on *.* to 'root'@'192.168.88.162' identified by '123456';
flush privileges;
grant FILE on *.* to 'root'@'192.168.88.163' identified by '123456';
grant replication slave on *.* to 'root'@'192.168.88.163' identified by '123456';
flush privileges;
这里的用户是同步的时候从库使用的用户,root代表账号,123456代表密码
重启mysql
service mysql restart
重启成功后,登录mysql。
mysql -uroot -p123456
File是同步会使用到的binlog文件,Position是同步的时候也要用到的。
从库配置
注意:因为我是克隆的虚拟机,克隆后的Mysql的UUID是一样的,如果一样等会会有问题,Slave_IO_Running: No,这个会为No,本来是Yes,在不同的从节点修改Mysql的UUID,把最后一个字符改下就行,两台从节点都要改,master不用改。
vim /export/server/mysql-5.7.29/data/auto.cnf
[auto]
server-uuid=154fbe63-b236-11eb-a831-000c2987b482
1、修改/etc/my.conf
log-bin=mysql-bin
server-id=2
binlog-ignore-db=information_schema
binlog-ignore-db=sys
binlog-ignore-db=mysql
replicate-do-db=cool
replicate-do-db=cool2
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60
注意:两个从库的server-id不一样,需要唯一。
2.修改完/etc/my.cnf后
重启mysql
service mysql restart
重启成功后,登录mysql。
mysql -uroot -p123456
进入Slave的mysql控制台,执行下面操作:
stop slave;
change master to master_host='192.168.88.161',master_user='root',master_password='123456',master_log_file='mysql-bin.000004', master_log_pos=5653;
start slave;
注意:上面的master_log_file是在Master中show master status显示的File,
而master_log_pos是在Master中show master status显示的Position。配置第二个从库的时候,需要重新从matser获取File和position。
3.然后可以通过show slave status查看配置信息。
上面的信息有Slave_IO_Running: Yes和Slave_SQL_Running: Yes,证明主从同步成功。
4.如果出错,可以清理掉之前的配置,防止同步已经同步了的数据,执行以下命令:
mysql> stop slave;
mysql> reset slave all;
上述的步骤需要在2个从库中操作,操作完成后。可以在Master建表插入数据,然后再从2个库中查看,如果2个都有数据,则证明主从数据库同步成功。
参考资料
https://forezp.blog.csdn.net/article/details/94173427