设置主数库和从数库的原因?
数据库是用来存储数据的,为什么要设置主数据库和从数据库呢,往往是为了读写分离,减轻因读取数据的操作太频繁了,导致网站崩掉,服务器宕机,影响正常的网站运行。
mysql主从同步的原理
主从库同步的原理图
举例说明一下主从库的同步的原因,需要用到以下的这个名词,主数据服务器,从数据服务器slave,二进制日志(binary log file),中继日志(relay log file),I/O线程,SQL线程。
主数据服务器master:主要用来从业务服务写入数据或者修改更新数据
从数据服务器slave:主要用来读取业务所需要的数据
二进制日志(binary log file):用来存储写入以及更新的数据信息
中继日志(relay log file):承接主服务器数据信息,转存在从服务器上
I/O线程:监听主服务器是否发生数据更改的行为
SQL线程:将主服务器数据更改的数据从中继日志文件中读取数据写入到从数据服务器中
当主数据服务器master进行写入数据或者更新数据操作的时候,数据更改会记录在二进制日志(binary log file)中,主服务器master与从服务器slave进行通讯的是I/O线程,它将修改的数据异步复制写入到从服务器slave的中继日志(relay log file)中,从服务器slave与中继日志之间通信使用SQL线程,SQL线程可以异步从中继日志(relay log file)中读取数据后再写入到自己的数据库中,就完成了数据的主从同步功能。
从库为什么不能直接存储二进制日志文件里面的数据?
数据的主从同步就是为了让计算机快速的进行读写操作,而且是大批量的数据,一旦大量数据进行写入或者更新数据,从数据库如果直接从二进制日志来接收,数据是以队列形式进行传输的,若队列的数据没有快速处理,堆积起来,从服务器可能也会崩溃宕机,所以从性能上考虑,从服务器创建了I/O线程对象将数据转到中继日志,起个缓存功能。
网友评论