邮箱:oxwangfeng@qq.com
分类: 服务器与存储
2016-01-28 14:15:19
背景技术
一种新的同步方法,从多个master读取日志,然后将日志在一个集中的slave上重放的方法及装置。
现有技术的技术方案:
现有技术方案是使用MYSQL异步复制或半同步复制,从一个master把数据复制到1个或多个slave上,一个slave只能有一个master,master可以有多个slave。
现有技术的缺点
比较浪费资源,一个master对应一个或多个slave,master越多slave越多。数据分散,无法集中式的进行查询。
解决了分库分表项目,没有一个集中式的地方提供查询的问题。
完整技术方案
使用解析master日志的方法,将多个master的日志解析到一个slave上重放的过程。
基础架构图如下所示:
上图的三个椭圆分拆为以下三个部分:
Waiting for binlog event:Master数据库write事件监听模块,多线程监听来自master的事件。
Put into events queue:事件队列模块,把从多个master中读取到的事件统一保存到一个事件队列。
事件批处理模块:从事件队列批量获取事件,发送到S上执行。
每增加一个master数据源,首先是配置复制信息,然后创建一个新的线程加载新的复制信息,启动复制。
配置复制信息: 配置一个新的master复制源,包含复制源的IP地址、连接账户、连接密码、连接端口、日志文件名称、日志便宜量。
创建新的复制线程:创建一个新的线程,根据新master复制源信息建立复制连接,设置好复制起始点。连接mysql服务端,并进行身份验证。设置好复制点的binlog文件名和偏移量。开始binlog文件的读取过程。
之后就是一个接收master事件,写入队列,批量更新到slave的循环过程,如下图所示: