大数据实践-数据同步篇tungsten-relicator(mysql->mongo)
[导读]
随着公司业务的快速发展数据量也迅速的增大,基于用户各个维度深度分析,关系型数据压力越来越大;因此急于寻找一些解决方案;调研了很久最后采用了 golang+mongod集群的这个方案,使用mongo做数据分析的存储端,数据同步就成为一个问题,目前网上主流的工具和解决方案都比较少,唯一一个稍微多点的文章就是tungsten-relicator,最后技术选型也才用了它,目前也使用了快一年了,遇到过很多问题,但基本还算比较稳定。
tungsten-relicator介绍
Tungsten Replicator 是一个高性能、开源的数据复制引擎,用于 MySQL、Postgres 和 Oracle 数据库。这是 Continuent 最先进的集群解决方案的核心组件之一。
第三方数据复制引擎--Tungsten-Replicator 主要特点:
1 支持高版本MySQL向低版本复制,5.1-->5.0
2 支持跨数据库系统的复制,MySQL-->PgSQL
3 支持多主库向单台Slave的复制,Multi-Master-->Slave
4 G-Replicator提取数据的更新记录写到MySQL 队列表Queue;基于这个队列,可以为其他应用服务提供便利
方案设计:
公司以前使用着mysql的主从,为了不影响正常业务,又添加了一个从库;从第二个从库同步到mongo集群中;本文不在描述mysql集群和monggo集群搭建,重点讨论tungsten-relicator同步和部署
1、停止从库的主从同步,导出从库中的所有数据,清空从库;
2、配置从库和第二从库的同步
3、搭建tungsten-relicator同步(mysql-mongo)
4、将从库导出的数据从新导入从库
5、重启启动主从同步。
部署完成后的图解

搭建tungsten-relicator同步
tungsten-relicator需要部署到两条服务器,主服务负责读mysql binlog日志解析后传送给从服务器,从服务器接收数据并同步到mongo
首先配置主服务器(192.168.0.1)
1、安装基础环境 JAVA RUBY
yum -y install java-1.7.-openjdk*
yum -y install ruby
2、修改系统的最大链接数
1)查看 ulimit -n
2)更改
vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
3)重启linux
reboot
3、修改mysql配置
vi /etc/my.cnf
最下面添加
binlog_format=row
max_allowed_packet = 52M
log_slave_updates =
同时停止同步
slave stop;
4、tungsten主程序配置
解压
tar -zxvf tungsten-replicator-2.2.-.tar.gz
cd tungsten-replicator-2.2.-
启动
./tools/tpm install mysql2mongodb \
--master=192.168.0.1 \
--install-directory=/opt/continuent \
--replication-user=root\
--replication-password=root\
--enable-heterogenous-master=true \
--repl-svc-extractor-filters=replicate \
--property=replicator.filter.replicate.do=zhongxin \
--property=replicator.filter.pkey.addColumnsToDeletes=true \
--property=replicator.filter.pkey.addPkeyToInserts=true \
--start
master -- 主服务器Ip地址
replication-user -- myslq用户名
replication-password -- mysql密码
property=replicator.filter.replicate.do -- 同步的数据库库名
5、查看tungsten 同步状态
/opt/continuent/tungsten/tungsten-replicator/bin/trepctl status
state : ONLINE 表示服务启动正常
配置从服务器(192.168.0.2)
1、安装基础环境 JAVA RUBY
yum -y install java-1.7.-openjdk*
yum -y install ruby
2、修改系统的最大链接数
1)查看 ulimit -n
2)更改
vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
3)重启linux
reboot
3、配置免密码登录(从tungsten从服务器免密码登录主服务器)
ssh-keygen -t rsa 一路回车
cd .ssh/
cp id_rsa.pub authorized_keys
chmod authorized_keys
scp authorized_keys root@192.168.0.2:/root/.ssh
chmod -R .ssh
验证无密码登录:ssh 192.168.0.1
4、tungsten从服务程序配置
解压
tar -zxvf tungsten-replicator-2.2.-.tar.gz
cd tungsten-replicator-2.2.-
启动
./tools/tungsten-installer --master-slave -a \
--datasource-type=mongodb \
--datasource-port=27001 \
--master-host=192.168.0.1 \
--service-name=mysql2mongodb \
--home-directory=/opt/continuent \
--java-file-encoding=UTF8 \
--svc-parallelization-type=none \
--start-and-report
mongodb安装在本地
master-host -- 主服务地址
5、查看tungsten 同步状态
/opt/continuent/tungsten/tungsten-replicator/bin/trepctl status
state : ONLINE 表示服务启动正常
6、启动mysql同步数据了
start slave;
运营篇
1、查看同步工具的日志
tail -300f /opt/continuent/tungsten/tungsten-replicator/log/trepsvc.log
tail -30f /opt/continuent/service_logs/trepsvc.log
2、查看同步的状态
/opt/continuent/tungsten/tungsten-replicator/bin/trepctl status
/opt/continuent/tungsten/tungsten-replicator/bin/trepctl services
3、当同步出错后,解决问题后,执行命令重新同步
/opt/continuent/tungsten/tungsten-replicator/bin/trepctl -service mysql2mongodb online
/opt/continuent/tungsten/tungsten-replicator/bin/trepctl status
4、当一些表里面存在特殊符号可能会导致同步出错,可以在从服务器启动的时候加上一下参数跳过同步的表
--property=replicator.filter.replicate.ignore=zhongxin.zx_notice_req_log \
如果在运行一段时间后,因为某些原因需要将数据抹掉重新同步的话,可以安装一下的步骤
1、停止从库的主从同步,导出从库中的所有数据,清空从库;
2、删除mysql从库的tungsten_mysql2mongodb库
3、删除mongo的 tungsten_mysql2mongodb库
4、重启启动tungsten的主从同步(安装启动命令)
5、将从库导出的数据从新导入从库
6、启动mysql主从同步。
大数据实践-数据同步篇tungsten-relicator(mysql->mongo)的更多相关文章
- 【大型网站技术实践】初级篇:搭建MySQL主从复制经典架构
一.业务发展驱动数据发展 随着网站业务的不断发展,用户量的不断增加,数据量成倍地增长,数据库的访问量也呈线性地增长.特别是在用户访问高峰期间,并发访问量突然增大,数据库的负载压力也会增大,如果架构方案 ...
- windows下mysql的数据主主同步
mysql主主备份: 保证各服务器上的数据库中的数据一致,因此需要开启数据库同步机制.由于是一整套系统,并且系统内含数据库.由于任何一台服务器都有可能被选中,因此要让所有的数据库上的数据都是最新的,任 ...
- 使用tungsten将mysql的数据同步到hadoop
背景 线上有很多的数据库在运行,后台需要一个分析用户行为的数据仓库.目前比较流行的是mysql和hadoop平台. 现在的问题是,如何将线上的mysql数据实时的同步到hadoop中,以供分析.这篇文 ...
- 数据可视化之PowerQuery篇(十九)PowerBI数据分析实践第三弹 | 趋势分析法
https://zhuanlan.zhihu.com/p/133484654 本文为星球嘉宾"海艳"的PowerBI数据分析工作实践系列分享之三,她深入浅出的介绍了PowerBI ...
- Canal:同步mysql增量数据工具,一篇详解核心知识点
老刘是一名即将找工作的研二学生,写博客一方面是总结大数据开发的知识点,一方面是希望能够帮助伙伴让自学从此不求人.由于老刘是自学大数据开发,博客中肯定会存在一些不足,还希望大家能够批评指正,让我们一起进 ...
- 大众点评的大数据实践-CSDN.NET
大众点评的大数据实践-CSDN.NET 大众点评的大数据实践 爬虫工程师成大数据时代的"宠儿" - 杭州新闻中心 - 杭州网 爬虫工程师成大数据时代的"宠儿"
- 大数据实践:ODI 和 Twitter (二)
大数据实践:ODI和Twitter(二) 在前面的文章中,我们已经使用flume将数据从twitter抓取到Hive中,现在我们来看看ODI(Oracle Data Integrator)如何在HIV ...
- 数据可视化之分析篇(九)PowerBI数据分析实践第三弹 | 趋势分析法
https://zhuanlan.zhihu.com/p/133484654 以财务报表分析为例,介绍通用的分析方法论,整体架构如下图所示: (点击查看大图) 我会围绕这五种不同的方法论,逐步阐述他们 ...
- 原生Redis跨数据中心双向同步优化实践
一.背景 公司基于业务发展以及战略部署,需要实现在多个数据中心单元化部署,一方面可以实现多数据中心容灾,另外可以提升用户请求访问速度.需要保证多数据中心容灾或者实现用户就近访问的话,需要各个数据中心拥 ...
随机推荐
- 利用js查找页面中的内链,外链
起初没听说过内链外链,只有链接锚文本,在面试中被问到如何查找到页面中的内链和外链,就在想,什么是内链和外链啊??????? 后来面试官给我解释了一下他们的区别,自己稍微懂了,自己当时回答的是通过获取a ...
- android shape的使用(转)
shape用于设定形状,可以在selector,layout等里面使用,有6个子标签,各属性如下: <?xml version="1.0" encoding="ut ...
- C++ 编写DLL文件给易语言调用
摸索了两天了,终于解决了所有问题,在此跟大家分享. 需要三个文件,dll_demo.h.dll_demo.cpp.dll_dome.def 直接上代码: 头文件如下: #ifndef _DLL_DEM ...
- 解决Unity5+Vuforia+Network本地联机发布到Android上白屏的问题
Unity5+Vuforia+Network本地联机,在Android下点击联机,然后识别模型就出现白屏,点击屏幕上相应位置的按钮(已白屏,但点击该看不见的按钮)还是能起作用,如跳转到其他场景正常. ...
- Python join()函数
今天写python 100例时,有个题目是大致是这样的:已知输入形式是1+3+2+1,要求输出形式为1+1+2+3 一开始思路是将输入的字符串用split()函数划分成数组,在对数组进行排序,再用fo ...
- Android课程---远程服务器存储
在使用Volley进行获取数据时,需要事先准备环境:在libs里面导入一个Volley.jar包,在网上都有,可以下载下来导入,或者自己电脑上有DT的,自己合成一个包也行. WebActivity.j ...
- 用Fmx调用Bass.dll
先上图 帮亲戚做个小软件,选用FMX,因为画面不会像vcl那样在图片多的时候闪烁.还能添加动画 但是MediaPlayer播放音乐视频真是不给力,视频没想到好办法.音频方面想到之前万一的Bass.ll ...
- 循序渐进做项目系列(4)迷你QQ篇(2)——视频聊天!(附源码)
一·效果展示 源码派送:MiniQQ1.1 文字聊天的实现参见:循序渐进做项目系列(3):迷你QQ篇(1)——实现客户端互相聊天 二·服务端设计 对于实现视频聊天而言,服务端最核心的工作就是要构造多媒 ...
- 《深入理解Java虚拟机》Java内存区域与内存溢出异常
注:“蓝色加粗字体”为书本原语 先来一张JVM运行时数据区域图,再接下来一一分析各区域功能: 程序计数器 程序计数器(program Counter Register)是一块较小的内存空间,它可以 ...
- iOS开发系列--IOS程序开发概览
概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ...