dong

MySQL5.7版本新特性(二)
第二章 Replication相关增强一、支持多源复制下面这张图就是在MySQL5.7之前,最常用的 “ 一主多从...
扫描右侧二维码阅读全文
01
2017/09

MySQL5.7版本新特性(二)

第二章 Replication相关增强

一、支持多源复制

下面这张图就是在MySQL5.7之前,最常用的 “ 一主多从 ” 的复制方式,这种复制方式为我们解决了很多线程的问题,比如分担主服务器的独负载,通过多个“ 从 ”来实现读写分离,这样降低了主服务器的压力,另外可以远距离的分发数据。但是这种方式的不足,就是如果我们想对一个 “ 从 ” 进行多个 “ 主 ”,或者说在“ 从 ”上进行主数据库的合并的话,在5.7之前的版本是无法实现的。当然了,如果我们使用一些第三方插件或者说一些架构上的方式的话,也可以达到相同的目的,但是这都不是MySQL本身支持的功能。

1.png

而MySQL5.7之后就引入了“ 多源复制 ”这个功能,我们可以对一个从服务器进行多个主服务器的配置,那么这种时候呢,我们就可以在从服务器上进行主服务器上数据的汇总。这种场景经常是发生在主服务器进行了分库分表的操作,也就是说把一张表分成n份,分布到了不同的主服务器上,为了实现后端的一些数据统计功能,往往需要将这n张表的数据汇总到一起,在之前这种汇总是比较复杂和困难的。

而在MySQL5.7之后,我们可以通过多源复制的结构,非常容易的将多个主服务器上的数据汇总到一个从服务器上去。另外,如果我们想在从服务器上对主服务器上的数据进行实时的备份,在MySQL5.7之前,我们每一个要进行实时备份的主服务器都需要一个相对应的从服务器。这样在无形中就浪费了很多的硬件资源,同时对DBA的管理也是一个挑战,需要备份的数据越多,需要管理的时间也就越多。在MySQL5.7之后,由于引入了“ 多源复制 ”的概念,我们就可以把多个主服务器上的数据同时汇总到一个从服务器上进行备份,这样不但节约了硬件的成本,同时也为DBA的管理提供了方便。

那么MySQL服务器的主从复制是如何实现的呢?实际上是对每一条主从复制定义一个channel的概念,也就是说master1对从的复制走的是channel1, master2走的是channel2,master3走的是channel3,在语法上也是非常明显的可以看到master语法新增加了 “ For channel ”,只要我们指定是对那个channel进行操作的,实际上就可以跟在MySQL5.7之前版本的使用方式是一样的,只不过是多了一个 “ For channel ”语句而已。

如果要使用这种多源复制,我们还必须要把Master-info和Relay-info这种数据存在表中。

2.png

二、基于库或是逻辑锁的多线程复制
MySQL5.7之前,从MySQL5.7开始支持多线程复制,只不过是对每一个库一个复制线程。如果某一个实例上只有一个库,而这个库的读写非常的频繁,这个时候使用多线程复制实际上是没有作用的,因为它跟单线程复制是一样的而且有的时候可能会比单线程更慢。而如果我们在某个实例上是有多个库的话,我们启用多线程复制,这个时候可能会有一些效果,但是效果并不明显。

而在MySQL5.7之后,对多线程复制功能进行了增强,实际上是引入了一种新的复制类型,增加了slave_parallel_type参数可以控制并发同步是基于database还是基于logical_clock。如果选择的是logical_clock,那么这个时候它会在主服务器上对同时进行的事务加上一个逻辑的时间戳,而这种相同时间戳的事务在从服务器上可以并行地去执行。在主服务器上能并行执行的事务在从服务器上也是可以并行执行的,这样就大大提高了并行同步的效率,实现了真正无延迟的复制。

三、在线变更复制方式
MySQL5.7之前,要把基于日志点的复制方式变为基于gtid的复制方式或是把基于gtid的复制方式变为基于日志点的复制方式必须要重启master服务器,这样才能达到切换的目的,也就是说必须要有一个停机的维护时间,而在大多数的生产环境中是很难找到这样一个切换复制方式的时候的。所以一旦使用基于日志点的复制方式,就很难将它变更为gtid的复制方式了。众所周知,gtid的复制方式在安全性和完整性方面高于日志点的复制方式。一些老的服务器使用的是基于日志点的复制方式,希望变更为gtid的复制方式。在MySQL5.7之前这种变更几乎是很困难的,因为没有这样的停机维护时间。

MySQL5.7之后,提供了允许在线变更复制的方式,而不用重启master服务器。步骤如下:

3.png

Last modification:May 24th, 2019 at 10:08 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment