MySQL主从复制原理

Posted 学无止境,一点一滴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL主从复制原理相关的知识,希望对你有一定的参考价值。

使用mysql复制功能可以将主服务器上的数据复制到多台从服务器上。默认情况下,复制是异步传输方式,从服务器不需要总是连接主服务器去更新数据。也就是说,数据更新可以在远距离连接的情况下进行,甚至在使用拨号网络的临时连接环境下也可以进行。根据自定义设置,我们可以对所有的数据库或部分数据库甚至是部分数据表进行复制。通过主从复制在企业级应用环境中就不必再担心数据库的单点故障,当一台服务器宕机时,其他服务器一样可以提供非常稳定、可靠的数据服务。

MySQL复制的优势如下:

(1)高性能:通过将请求分配给多台不同的从服务器提高性能与速度。在这种环境中,所有对数据库的写操作必须提供给主服务器,但读操作可以被平均分配给多台从服务器。

(2)数据安全:数据是从主服务器复制到从服务器的,而且从服务器可以随时暂停复制,这样我们就可实现数据备份与还原。

(3)远程数据分享:如果企业拥有多处位于其他地理位置的分公司,而这些分公司希望共享总部的数据库资源,就可以使用复制实现数据的共享,而且分公司不必时时连接主服务器,可以仅在需要时进行复制。

MySQL复制有两种核心的格式,一种是基于SQL语句的复制 SBR(Statement Based Replication),另一种是基于行的复制RBR(Row Based Replication),另外,有时也可以使用混合模式复制。MySQL5.6默认采用的是基于语句的复制。

MySQL服务器之间的复制是基于二进制日志机制的。在主服务器上,当MySQL实例进行写操作时会同时生成一条操作事件日志并写入二进制日志文件中,而从服务器则负责读取主服务器上的二进制日志,并在从服务器本机上重新执行该事件,从而实现复制数据至本地服务器。当主服务器开启二进制日志功能后,所有的SOL语句都将被记录至日志。从服务器复制这些二进制日志条目,并根据自己的需要决定哪些语句需要重新在从服务器上执行,而哪些语句不需要再执行,我们无法控制主服务器仅记录特定语句到日志文件中。如果进行其他设置,所有主服务器中的日志事件都将在从服务器上重新执行,当然,你可以配置从服务器仅执行主服务器中的部分日志事件。因为从服务器会记录二进制日志的进度与位置(比如执行到了第几条语句),所以从服务器可以断开与主服务器之间的连接,并在重新建立连接后继续进行复制工作。

在具体的操作过程中,主服务器与从服务器都需要配置一个唯一的ID编号。另外,所有的从服务器必须设置主服务器的主机名、日志文件名、文件位置等参数。

整个过程一般分为以下几个步骤进行。

(1)在主服务器上开启二进制日志功能,设置唯一的服务器ID编号,这些设置需要重启MySQL服务。

(2)在所有的从服务器上设置唯一的服务器ID编号,这些设置需要重启MySQL服务。

(3)在主服务器上为不用的从服务器创建可以读取主服务器日志文件的账户,或使用相同的统一账户。

(4)在进行数据复制之前,你还需要记录主服务器上二进制日志的位置标记。

 

参考自,丁明一    编著    《Linux运维之道》

以上是关于MySQL主从复制原理的主要内容,如果未能解决你的问题,请参考以下文章

MySQL的主从复制原理以及流程

详解Redis 主从复制及主从复制原理

深度探索MySQL主从复制原理

MySQL主从复制原理

MySQL主从复制+读写分离原理及配置实例

MySQL主从复制原理