MySQL高可用复制原理及主从实例测试解析

一、MySQL复制简介

使用MySQL复制功能可以将主数据的数据复制到多台从服务器上。默认情况下,采用异步传输方式,数据复制可以在各种不同的网路环境中进行。主从复制技术在企业生产中得到了广泛应用,它避免了数据库的单点故障,当一台服务器宕机,其他服务器一样可以提供稳定可靠的数据服务。

1 MySQL 复制原理

MySQL复制功能是将数据分布在多个系统上,这种机制是通过将MySQL的某一台服务器(master)的数据复制到其它服务器(slaves)上来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,从服务器接收到这些更新的日志内容,就按照日志内容在本机执行一遍,由此实现主从数据复制。主服务器写入日志时也维护着文件的一个索引以跟踪日志循环,当一个从服务器连接主服务器时,它通知主从服务器在日志中读取的最后一次成功更新的位置,从服务器接收那个时间点起发生的任何更新,然后封锁并等待主服务器通知新的更新。

2 MySQL 复制优点

高性能:通过将请求分配给多台不同的从服务器,提高性能及速度,在此种环境中,所有写操作必须在主服务器进行,读操作可以平均分配给多台从服务器。

数据安全:数据通过主从复制,把主服务器的数据复制的一份或者多份,即实现了数据的安全备份

数据分享:对于大型企业,各个地区的分公司也需要共享总部的数据资源,只需要用主从复制即可实现数据的共享,而且可以仅仅在需要时进行复制。

3 MySQL 复制格式

基于语句的复制: 在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。

基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍。

混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。

4 MySQL 复制步骤

整体上来说,复制有3个步骤:

(1)  master将改变记录到二进制日志(binary log)中(二进制日志事件,binary log events);

(2)  slave将master的binary log events拷贝到它的中继日志(relay log);

(3)  slave重做中继日志中的事件,将改变反映它自己的数据。

5 主从复制形式

一主一从

主主复制

一主多从---扩展系统读取的性能,因为读是在从库读取的;

多主一从---5.7开始支持

联级复制---

6 半同步复制

5.5版本集成到MySQL,以插件的形式存在,需要单独安装

确保事务提交后binlog至少传输到一个从库

不保证从库应用完这个事务的binlog

性能有一定的降低,响应时间会更长

网络异常或从库宕机,卡主主库,直到超时或从库恢复

半同步原理图:

二、MySQL主从复制实例解析

首先了解数据库的主从复制部署注意要点

>>在主服务器上开启二进制日志,并设置唯一的服务器ID编号,设置后重启MySQL生效。

>>在所有从服务器上设置唯一服务器ID编号,重启后生效。

>>在主服务器上创建让从服务器读取日志文件的账号,或者使用统一账户。

>>在进行数据复制前,需要记录主服务器上二进制日志的位置标记。

猜你喜欢

转载自www.linuxidc.com/Linux/2017-02/140475.htm