手动搭建MySQL主从同步

本次搭建主从同步的环境:阿里云CentOS 7.6 ,MySQL5.7

服务器安装数据库,qin请ca参考我博客里的Centos安装mysql那篇文章。

场景介绍

本次将会搭建MySQL的主从同步,其中一台Master,一台Slave

Master: IP:112.*.*.*  Port:3306
Slave1: IP:112.*.*.*  Port:3306

开始搭建

修改配置文件 当你在服务器安装完MySQL后,在系统的etc文件下有个my.cnf配置文件。 打开文件,加入如下内容(别忘了修改之前做好备份):

#Master
#该配置为Master的配置
server-id=201 #Server id 每台MySQL的必须不同
log-bin=/var/lib/mysql/mysql-bin.log #代表开启binlog日志
expire_logs_days=10 #日志过期时间
max_binlog_size=200M #日志最大容量
binlog_ignore_db=mysql #忽略mysql库,表示不同步此库
#该配置为Slave的配置,第二台Slave也是这么配置,不过要修改一下server-id
server-id=202
expire_logs_days=10 #日志的缓存时间
max_binlog_size=200M #日志的最大大小
replicate_ignore_db=mysql #忽略同步的数据库

在Master库中新增Slave用户

打开Master节点的客户端 ,**mysql -u root -p** 密码

创建用户 create user 'Slave'@'%' identified by '123456';

给新创建的用户赋权:grant replication slave on *.* to 'Slave'@'%';

查看Master节点状态

以上操作都没有问题后,我们在客户端中输入show master status查看master的binlog日志。 微信截图_20191111142444

File是指主节点的备份文件名称,Position是定位内容位置,从节点备份是会根据这个地方来备份。

配置Slave节点

打开Slave节点客户端,在我们的Slave节点中输入如下命令:

change master to master_user='Slave',master_password='123456',master_host='你自己服务器的IP地址',master_log_file='mysql-bin.000001',master_log_pos=1422627;

#注意,这里的master_log_file,就是binlog的文件名,输入上图中的mysql-bin.000001,每个人的都可能不一样。
#注意,这里的master_log_pos是binlog偏移量,输入上图中的1422627,每个人的都可能不一样。

配置完成后,输入 start slave; 启动从节点后,输入 show slave status;来查看从节点状态 微信图片_20191111143013 当返回结果中,Slave_Master_Log_File 和 Slave_IO_Running都是YES; 说明主从同步开启成功。

搭建完成

通过上述步骤,就完成了MySQL主从同步的搭建。下面我们可以进行测试。

这时候你在Master库中新建表或者操作表中的数据,Slave库都会备份下来。

注意事项

如果出现IO线程一直在Connecting状态,可以看看是不是两台机器无法相互连接。 如果可以相互连接,那么有可能是Slave账号密码写错了,重新关闭Slave然后输入上面的配置命令再打开Slave即可。

如果出现SQL线程为NO状态,那么有可能是从数据库和主数据库的数据不一致造成的,或者事务回滚,如果是后者,先关闭Slave,然后先查看 Masterbinlogposition,然后输入配置命令,再输入set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;,再重新start slave;即可.

如果问题是前者,那么就排查一下是不是存在哪张表没有被同步,是否存在主库存在而从库不存在的表,自己同步一下再重新配置一遍即可。


有些事情感觉很难,其实不麻烦。