场景
CentOS7中安装Mysql8并配置远程连接和修改密码等:
CentOS7中安装Mysql8并配置远程连接和修改密码等_霸道流氓气质的博客-CSDN博客
在上面实现安装Mysql8的基础上,克隆出两台机器,修改ip后进行mysql的主从复制搭建。
Mysql主从复制
在主库上把数据更改记录到二进制日志中(Binary Log)中,这些记录称为二进制日志事件。
从库通过IO线程将主库上的日志复制到自己的中继日志(Relay Log)中。
从库通过SQL线程读取中继日志中的事件,将其重放到自己数据上。
注:
博客:
霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主
实现
搭建两台Mysql8的服务器,一台是192.168.148.141作为主服务器,一台是192.168.148.142作为从服务器。
主服务器配置
1、修改主服务器中mysql的配置文件
这里mysql的配置文件my.cnf的位置是/etc/my.cnf,具体位置根据自己安装过程而定。
vim /etc/my.cnf
下面是配置文件修改前的内容
在[mysqld]
下面添加如下
server-id=141
log-bin=mysql-bin
其中server-id为指定服务器节点id,一般为服务器ip方便区分;
log-bin配置开启日志文件,后面配置为前缀。
配置后的内容为
2、主服务器修改以上配置后,需要重启mysql服务
systemctl restart mysqld
重启之后查看mysql服务状态是否正常为active(running)
3、使用Navicat等软件连接主服务,然后验证server_id是否配置成功
show variables like '%server_id%';
4、查询主服务器同步的文件和行数
show master status;
记住这里的File下的mysql-bin.000001以及Position下的157,此时不要再对主服务器有任何操作。
从服务器配置
1、同样修改从服务器的配置文件my.cnf
vim /etc/my.cnf
同理添加server-id的配置以及开启日志的配置
server-id=142
log-bin=mysql-bin
2、然后重启从服务器服务
systemctl restart mysqld
同理进行验证
show variables like ‘%server_id%’;
3、从服务器同步主服务配置
使用Navicat等软件连接从服务器并执行以下sql
change master to master_host='192.168.148.141',master_user='root',master_password='Aa_123456',master_log_file='mysql-bin.000001',master_log_pos=157;
注意这里的
master_host为主服务器的ip
master_user为连接主服务器的用户名
master_password为连接主服务器的密码
master_log_file为要同步的日志文件file,即对应上面主服务器查看时的File字段
master_log_pos为要同步日志文件的位置,即对应上面主服务器查看时的Position字段
执行成功后开启同步
start slave
然后检查从服务器复制功能状态
show slave status;
这里验证结果中要着重验证Slave_IO_Running以及Slave_SQL_Running是否都为Yes
如果发现Slave_IO_Running:No
这是因为两台服务器均为克隆的虚拟机,其mysql的uuid均一致,所以需要修改其中一台mysql的uuid。
找到从服务器上auto.cnf的位置
find / -iname "auto.cnf"
比如这里查找的位置为/var/lib/mysql/auto.cnf
编辑该文件,将uuid最后的一位修改为6,原来是5
然后重启mysql服务。
验证主从复制
在主服务器中新建数据库、新建表,从库中会自动同步,主库中添加表数据,从库表会自动同步