点击上方“业余草”,选择“置顶公众号”
第一时间获取技术干货和业界资讯!
前面两周,我写了一篇《手把手教你利用 SpringBoot + Mybatis 实现一个读写分库项目》。今天,我们抽个时间把 MySQL 的主从复制架构搭建出来吧。要不然,大家以前的主从复制项目,可能还真不好进行验证测试。
在开始之前,我们先来简单的说一下 MySQL 主从复制的原理。MySQL复制过程分成三步:
master 将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;
slave 将 master 的 binary log events 拷贝到它的中继日志(relay log);
Slave 重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL 复制是异步的且串行化的。
简单的来说就是 slave 节点会从 master 读取 binlog 来进行数据同步。
![f8d99ba6829e01bc676a73060a5db38c.png](https://i-blog.csdnimg.cn/blog_migrate/828dbb062becd74c48ffa4e7394e0d42.jpeg)
相信很多人对上面的原理已经耳朵听出茧子了。还不说市面上还有很多专门做复制的中间件,原理都是同上。
下面我们开始动手配置 MySQL 的主从复制经典架构。以 Windows (配置文件为my.ini文件),从机为 Linux(配置文件为my.cnf)。这样各个系统都能兼顾到。
第一步,先在主库上给从库创建一个可以读取主库 binlog 的账号。
第二步,在主库的 my.ini 文件中的 [mysqld] 后面配置上下面的内容。
第三步,修改配置文件后,重启服务:service mysqld restart。
如果启动失败,通过cat /var/log/mysqld.log | tail -30 查看 mysql 启动失败的日志,从日志内容寻找解决方案。
第四步,查看主服务器当前二进制日志名和偏移量,这个操作的目的是为了在从数据库启动后,从这个点开始进行数据的恢复。
![ec1101e6eff84fb269213c3d7e407600.png](https://i-blog.csdnimg.cn/blog_migrate/c4be4a12bcc9723f7740db32ec39e3cf.jpeg)
到此,主库配置已经操作完了,下面我们开始操作从库的配置。
从库是一台 Linux,所以我们登录上去,配置 my.cnf 文件。
第一步,还是在 my.cnf 文件中的 [mysqld] 后面配置上下面的内容。
配置完成后进行重启数据库。如果重启失败,报错。则直接在从库上执行下面的 SQL 语句来操作。
然后重启 slave 节点,查看从节点状态。
![471d4fc98c5260ee052d5940d79e840a.png](https://i-blog.csdnimg.cn/blog_migrate/3e682061508172913f220fd2b860d2e5.jpeg)
当结果中 Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes 都显示为 YES,则表明搭建成功。
注意:为了保证搭建成功,不受防火墙影响,大家可以把主从两台服务器上的防火墙都给关了。
然后你就可以随心所欲的创建表,增删改查操作数据了。
10T技术资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,GO等等。在公众号内回复对应关键字或框架名字,即可免费获取!!
你再主动一点点 我们就有故事了