大数据实践-数据同步篇tungsten-relicator(mysql->m

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 MongoDB,通用型 2核4GB
简介:

[导读] 

           随着公司业务的快速发展数据量也迅速的增大,基于用户各个维度深度分析,关系型数据压力越来越大;因此急于寻找一些解决方案;调研了很久最后采用了 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.0-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 = 1
同时停止同步
slave stop;
复制代码

4、tungsten主程序配置

复制代码
解压 
tar -zxvf tungsten-replicator-2.2.1-403.tar.gz
cd tungsten-replicator-2.2.1-403
启动 
  ./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.0-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 600 authorized_keys
  scp authorized_keys root@192.168.0.2:/root/.ssh
  chmod 700 -R .ssh
 
  验证无密码登录:ssh 192.168.0.1 
复制代码

4、tungsten从服务程序配置

复制代码
解压 
tar -zxvf tungsten-replicator-2.2.1-403.tar.gz
cd tungsten-replicator-2.2.1-403
启动 
  ./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主从同步。


作者:纯洁的微笑 
出处:www.ityouknow.com 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 

本文如对您有帮助,还请多帮 【推荐】 下此文。 
如果喜欢我的文章,请关注我的公众号

分类:  系统架构

本文转自纯洁的微笑博客博客园博客,原文链接:http://www.cnblogs.com/ityouknow/p/4918164.html,如需转载请自行联系原作者
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
13天前
|
缓存 NoSQL 关系型数据库
13- Redis和Mysql如何保证数据⼀致?
该内容讨论了保证Redis和MySQL数据一致性的几种策略。首先提到的两种方法存在不一致风险:先更新MySQL再更新Redis,或先删Redis再更新MySQL。第三种方案是通过MQ异步同步以达到最终一致性,适用于一致性要求较高的场景。项目中根据不同业务需求选择不同方案,如对一致性要求不高的情况不做处理,时效性数据设置过期时间,高一致性需求则使用MQ确保同步,最严格的情况可能涉及分布式事务(如Seata的TCC模式)。
37 6
|
20天前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:保障数据完整性,MySQL事务在进销存管理系统中的应用(12)
轻松入门MySQL:保障数据完整性,MySQL事务在进销存管理系统中的应用(12)
|
27天前
|
关系型数据库 MySQL
elasticsearch对比mysql以及使用工具同步mysql数据全量增量
elasticsearch对比mysql以及使用工具同步mysql数据全量增量
21 0
|
29天前
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
20 1
|
29天前
|
Java 关系型数据库 数据库连接
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
24 1
|
29天前
Mybatis+mysql动态分页查询数据案例——条件类(HouseCondition)
Mybatis+mysql动态分页查询数据案例——条件类(HouseCondition)
15 1
|
29天前
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
21 1
|
29天前
Mybatis+mysql动态分页查询数据案例——房屋信息的实现类(HouseDaoMybatisImpl)
Mybatis+mysql动态分页查询数据案例——房屋信息的实现类(HouseDaoMybatisImpl)
21 2
|
29天前
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
15 1
|
1月前
|
SQL 安全 关系型数据库
MySQL安全性:防止攻击和保护数据
MySQL安全性:防止攻击和保护数据
38 1

热门文章

最新文章