Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL主从复制

MySQL的主从复制原理详细分析

作者:菜鸟~~

这篇文章主要介绍了MySQL的主从复制原理详细分析,读写分离是基于主从复制来实现的。文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

前言

在实际生产环境中,如果对mysql数据库的读和写都在一台数据库服务器中操作,无论是在安全性、高可用性,还是高并发等各个方面都是不能满足实际需求的,一般要通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力

一、主从复制概念

主从复制是MySQL提供的基本的技术,主从复制的流程:binlog二进制日志(除了查询其他的更改相关的操作都会记录在binlog里面)、relay log日志和三个线程(master的一个线程和slave的两个线程)。

主库(master)对外提供数据的增删改查服务,主库中涉及到数据的修改都会写在binlog从库(slave)用来数据同步和数据备份,通过专门的线程从主库里面的binlog把主库和数据、权限、表结构相关的修改同步到从库里面,相当于是在主库上做的所有修改都会通过都会通过主从复制机制体现在从库上。

主从复制的好处:数据备份,我们甚至可以给它做一个热备份,就是通过MySQL中间件mycat,可以实现容灾,容灾也体现了高可用
容灾:如果主库挂了,由中间件代理mycat自动把服务的请求映射到从库,由从库继续对外提供服务,体现出了高可用性(后端的服务允许一定的异常发生,但是后端的架构服务要可以容错,把这些异常的错误处理掉,并对外重新提供正常的服务)

二、读写分离的概念

读写分离是基于主从复制来实现的。在实际的应用环境中,肯定是读操作多,就像我们在电商平台上去购买东西,可能看了100个也就买了一两个。所以读操作永远比写这种更新操作多很多。所以我们基于主从复制的读写分离配置,就是让一个主库专门用来做数据的修改,写的时候专门在主库上写,主库通过主从复制把数据的更改通过binlog同步到从库上去,那么其他的客户端查询的请求都会最终映射到从库上去,而我们一个主库带上两三个从库,主库专门用来做数据的更新(写操作),从库专门用来做读操作这样一来可以很好的分摊读写的压力,不用全部都集中在主库上,对于后端服务的并发处理能力有很大的提高,另外就是它的高可用容灾,当主库挂了以后,可以把指定的从库变成主库。

上图中的binlog,即使我们没有主从复制,也是会写binlog的,只不过主从复制是通过binlog来实现的。

三、主库和从库

1. 主库

主库master服务器创建一个binlog转储线程将二进制日志内容发送到从服务器

2. 从库

四、主从复制的流程

主从复制的流程:两个日志(binlog二进制日志和relay log日志)和三个线程(master的一个线程和slave的两个线程)。

五、主从复制效果展示

linux上的centos作为主库win10上的mysql server作为从库来演示:

主从复制是单向同步,master的更改往slave同步。配置好主从复制的时候,两个库的数据可能是不一样的,从配置好主从复制开始,主库所有的更改都会同步到从库。

master创建mytest数据库:

查看slave,发现mytest同步过来了:

master创建了user表,slave也同步了user表:

现在linux端的MySQL(master)删除mytest库

此时slave的mytest也不存在了

show processlist可以查看master当前环境下的工作线程

查看slave当前环境下的工作线程

到此这篇关于MySQL的主从复制原理详细分析的文章就介绍到这了,更多相关MySQL主从复制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文