mybus

MySQL到Redis/Hbase的同步工具
授权协议 未知
开发语言 C/C++
所属分类 数据库相关、 数据库管理工具
软件类型 开源软件
地区 国产
投 递 者 曹焱
操作系统 Linux
开源组织
适用人群 未知
 软件概览

mybus 实现MySQL数据库到Redis,以及HBASE的全量,以及增量同步

1. 支持通过正则表达式指定需要导出的db以及表

2. bus程序无状态,每一行有自己的位置点,位置点信息存储在下游db中

3. 增量同步通过解析MySQL的行复制日志,完成增量数据的同步

4. 通过编写so,实现转换的业务逻辑

5. 上下游ip,端口,需要导出的schema信息都存储在configservice中,configservice是一个用redis作为存储的基于django的pythonweb程序

程序作为基础组件,在新浪以及微博的数据运维中,其可靠性得到了充分验证

使用方式如下:

一. 编译程序

1. 代码中包含了链接mysql以及hbase的库,目前支持centos5/centos6,centos7暂不支持

2. 进入mybus目录,执行make命令,如果make失败,请将结果贴出来

二. 启动configservice

2. redis官网下载redis随便一个版本, 安装,并运行,得到redis_ip, redis_port,暂不支持rediscluster

3. 进入bus_manager/business目录,修改views.py文件,填入具体的redis_ip, redis_port

4. 然后返回bus_manger目录,执行nohup python manage.py runserver 0.0.0.0:8888 &

三. 配置msg_test模拟业务

1. 打开浏览器,执行http://host:8888, 打开configservice页面

2. 添加业务msg_test

3. 配置msg_test,配置较为复杂,后面会详细介绍,字符集转换慎用,最好下游和上游数据集一致

4. 配置schema的时候,db和table的名字请用正则表达式,对于列,请采用c1#c2#c3的形式,统计开关,用来确定这个表的数据是否要统计

四. 编译转换插件并copy到具体位置 1. 进入myso/msg 目录下,执行make命令,生成libprocess.so

2. 进入src目录,执行mkdir msg && cp -ap ../myso/msg/libprocess.so msg

3. 进入src目录,执行/usr/local/databus/bus -x msg_test -p 18889 -m 127.0.0.1:9999

五. 建立上游数据库,我们选用的mysql版本为5.51. 启动mysql数据库,建立要导出的heart_beat表

六. 建立下游数据库,redis数据库版本没有具体要求1. 启动redis数据库

七. 根据设定配置,执行命令

1. 在configservice页面选择info source,检查下上下游配置是否正确

2. 在configservice页面选择info matchschema,检查导出对应的schema信息是否正确

2. 然后执行启动全量复制就开始全量复制,全量后要增量复制,修改选项,再执行启动增量复制就可以了

3. 选择info, 检查是否有error信息

这里说的这些对于真正要run起来还是不太够的,我们的思路其实很清晰

1. 所有的配置都要存在configservice中,所以所有的配置都在页面上完成,配置有些复杂

2. bus启动不需要配置文件,但是需要制定configservice的dns和port

3. 我们的底层运维系统采用了salt, 我们的web服务器运行在master上,所以bus的启动,日志查看都在web页面上完成, 同时bus,支持采用redis协议对其监控,启动关闭传输,关闭程序等操作


  • By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! Bus Types 为了自己学习! 定义 int bus_register(

  • mybus 实现MySQL数据库到Redis,以及HBASE的全量,以及增量同步 1. 支持通过正则表达式指定需要导出的db以及表 2. bus程序无状态,每一行有自己的位置点,位置点信息存储在下游db中 3. 增量同步通过解析MySQL的行复制日志,完成增量数据的同步 4. 通过编写so,实现转换的业务逻辑 5. 上下游ip,端口,需要导出的schema信息都存储在configservice中,

  • mybus 实现MySQL数据库到Redis,以及HBASE的全量,以及增量同步 支持通过正则表达式指定需要导出的db以及表 bus程序无状态,每一行有自己的位置点,位置点信息存储在下游db中 增量同步通过解析MySQL的行复制日志,完成增量数据的同步 通过编写so,实现转换的业务逻辑 上下游ip,端口,需要导出的schema信息都存储在configservice中,configservice是一

  • mybus 实现MySQL数据库到Redis,以及HBASE的全量,以及增量同步 支持通过正则表达式指定需要导出的db以及表 bus程序无状态,每一行有自己的位置点,位置点信息存储在下游db中 增量同步通过解析MySQL的行复制日志,完成增量数据的同步 通过编写so,实现转换的业务逻辑 上下游ip,端口,需要导出的schema信息都存储在configservice中,configservice是一

  • mybus 实现MySQL数据库到Redis,以及HBASE的全量,以及增量同步 支持通过正则表达式指定需要导出的db以及表 bus程序无状态,每一行有自己的位置点,位置点信息存储在下游db中 增量同步通过解析MySQL的行复制日志,完成增量数据的同步 通过编写so,实现转换的业务逻辑 上下游ip,端口,需要导出的schema信息都存储在configservice中,configservice是一

  • mybus 实现MySQL数据库到Redis,以及HBASE的全量,以及增量同步 支持通过正则表达式指定需要导出的db以及表 bus程序无状态,每一行有自己的位置点,位置点信息存储在下游db中 增量同步通过解析MySQL的行复制日志,完成增量数据的同步 通过编写so,实现转换的业务逻辑 上下游ip,端口,需要导出的schema信息都存储在configservice中,configservice是一

  • mybus 实现MySQL数据库到Redis,以及HBASE的全量,以及增量同步 支持通过正则表达式指定需要导出的db以及表 bus程序无状态,每一行有自己的位置点,位置点信息存储在下游db中 增量同步通过解析MySQL的行复制日志,完成增量数据的同步 通过编写so,实现转换的业务逻辑 上下游ip,端口,需要导出的schema信息都存储在configservice中,configservice是一

  • mybus 实现MySQL数据库到Redis,以及HBASE的全量,以及增量同步 支持通过正则表达式指定需要导出的db以及表 bus程序无状态,每一行有自己的位置点,位置点信息存储在下游db中 增量同步通过解析MySQL的行复制日志,完成增量数据的同步 通过编写so,实现转换的业务逻辑 上下游ip,端口,需要导出的schema信息都存储在configservice中,configservice是一

  • mybus 实现MySQL数据库到Redis,以及HBASE的全量,以及增量同步 支持通过正则表达式指定需要导出的db以及表 bus程序无状态,每一行有自己的位置点,位置点信息存储在下游db中 增量同步通过解析MySQL的行复制日志,完成增量数据的同步 通过编写so,实现转换的业务逻辑 上下游ip,端口,需要导出的schema信息都存储在configservice中,configservice是一

  • mybus 实现MySQL数据库到Redis,以及HBASE的全量,以及增量同步 支持通过正则表达式指定需要导出的db以及表 bus程序无状态,每一行有自己的位置点,位置点信息存储在下游db中 增量同步通过解析MySQL的行复制日志,完成增量数据的同步 通过编写so,实现转换的业务逻辑 上下游ip,端口,需要导出的schema信息都存储在configservice中,configservice是一

 相关资料
  • 我在不同的机器上各有3台redis服务器。是否有可能在3台服务器之间同步,即每台服务器具有相同的数据。 我考虑使用主从模式,也就是说,所有的写操作都会发送到一台服务器(a),这台服务器就是主服务器。其他2台服务器(B、C)是从服务器,您可以从中读取数据。但问题是,当主机启动时,您尝试从从机读取时,您会被重新定向到主机-我希望从机为读取服务。 我如何实现这个要求? 要回答以下问题:- 如下图所示,1

  • 问题内容: 在我的应用程序(node / express / redis)中,我使用一些代码同时更新数据库中的多个项目: 我可以确定在方法返回之前将执行所有这些操作吗?我关心的是异步处理。由于我不在db操作中使用回调函数,因此可以吗? 问题答案: 使用MULTI / EXEC命令创建命令队列并连续执行它们。然后使用回调发送回连贯的响应(成功/失败)。请注意,您必须使用Redis的AOF来避免这种情

  • 本文向大家介绍基于C# 写一个 Redis 数据同步小工具,包括了基于C# 写一个 Redis 数据同步小工具的使用技巧和注意事项,需要的朋友参考一下 概念   Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、

  • 问题内容: 如果我将某些内容推送到Redis的列表中,然后从该列表中弹出,是否可以保证我会得到较早推送的项目,还是可以在写入之前进行读取? 问题答案: Redis在单个线程中运行(执行后台保存时进行分叉除外,但这无关紧要),因此以后发送的任何请求都必然会在以后运行。这样,您将看到您推送的值。 (不过,再三考虑一下,如果您不愿意并且有意使它故意失败,可能会引发失败。但这将需要通过单独的连接发送请求,

  • 问题内容: 用例是使用Redis作为MySQL的本地缓存 MySQL中的数据格式为:单个主键和其他几个字段。不会有查询数据库的交叉表 Redis键是MySQL中的主键,值是包含MySQL中其他字段的哈希 关闭电源后,少于一分钟的数据丢失是可以接受的。 我的解决方案是: Redis写入AOF文件,某些进程将监视此文件并将更新的数据同步到MySQL Hack Redis可以在多个文件中写入AOF,就像

  • 名称: aof_to_pika 位置: pika bin目录下 目的: 方便Redis数据到Pika的迁移 背景: Pika兼容Redis协议,所以任何使用于Redis的迁移工具同样也适用于Pika,Redis-cli本身提供了一个pipe参数来完成Redis到Redis的数据迁移。该工具的实现方式为读取待迁移Redis的aof文件并批量发送到目的Redis。Berry借鉴这种方式,并增加了如下改

  • 这个练习直接来自SCJP,由凯西·塞拉和伯特·贝茨完成 同步代码块 在这个练习中,我们将尝试同步一个代码块。在该代码块中,我们将获得对象的锁,以便其他线程在代码块执行时无法修改它。我们将创建三个线程,它们都将尝试操作同一对象。每个线程将输出一个字母100次,然后将该字母递增一次。我们将使用的对象是StringBuffer。 我们可以在一个String对象上进行同步,但是字符串一旦创建就不能被修改,