mysql数据库主从同步的原理

mysql数据库主从同步的原理

1.为什么数据库要设置主服务器和从服务器?

数据库顾名思义就是用来存储数据的,那么有一个就够了,为什么还要主从服务器呢?就我目前的认识,我认为有两个原因,第一,数据库数据是一个公司或者集团企业最为重要的资产,我得备份。第二,当用户的访问量越来越高的时候,一旦查询也就是读取数据的操作太频繁了,势必网站崩掉,服务器宕机,很影响用户的体验度。

2.mysql主从同步的原理
mysql数据库主从同步的原理_第1张图片
实际开发项目中可能存在一主多从的数据库服务器,也就是一个主服务器,多个从服务器。现在就以一主一从的服务器配置来说明下数据怎么做到主从同步的,先来介绍下几个名词。

  • 主数据服务器:主要用来从业务服务写入数据或者修改更新数据
  • 从数据服务器:主要用来读取业务所需要的数据
  • 二进制日志:用来存储写入以及更新的数据信息
  • 中继日志:承接主服务器数据信息,转存在从服务器上
  • I/O线程:监听主服务器是否发生数据更改的行为
  • SQL线程:将主服务器数据更改的数据从中继日志文件中读取数据写入到从数据服务器中

当主数据服务器master进行写入数据或者更新数据操作的时候,数据更改会记录在二进制日志(binary log file)中,主服务器master与从服务器slave进行通讯的是I/O线程,它将修改的数据异步复制写入到slave服务器的中继日志(relay log file)中,从服务器slave与中继日志之间通信使用SQL线程,SQL线程可以异步从中继日志中读取数据后再写入到自己的数据库中,就完成了数据的主从同步功能。

3.从服务器slave为什么不能直接存储二进制日志文件里面的数据?

个人理解的原因是本来做数据的主从同步就是为了让计算机快速的进行读写操作,而且是大批量的数据,一旦大量数据进行写入或者更新数据,从数据库slave如果直接从二进制日志来接收,数据是以队列形式进行传输的,若队列的数据没有快速处理,堆积起来,从服务器可能也会崩溃宕机,所以从性能上考虑,从服务器slave创建了I/O线程对象将数据转到中继日志,起个缓存功能。

你可能感兴趣的:(数据库)