Chinaunix首页 | 论坛 | 博客
  • 博客访问: 427706
  • 博文数量: 43
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 518
  • 用 户 组: 普通用户
  • 注册时间: 2015-12-14 12:10
个人简介

邮箱:oxwangfeng@qq.com

文章分类

全部博文(43)

文章存档

2021年(1)

2018年(7)

2017年(9)

2016年(26)

我的朋友

分类: 服务器与存储

2016-01-28 14:15:19


背景技术

一种新的同步方法,从多个master读取日志,然后将日志在一个集中的slave上重放的方法及装置。

现有技术的技术方案:

    现有技术方案是使用MYSQL异步复制或半同步复制,从一个master把数据复制到1个或多个slave上,一个slave只能有一个mastermaster可以有多个slave

现有技术的缺点

    比较浪费资源,一个master对应一个或多个slavemaster越多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的循环过程,如下图所示:



阅读(3034) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~