MySQL到MongoDB的同步工具_Tungsten Replicator安装配置

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: Tungsten Replicator 是一种MySQL复制引擎,类似于MySQL 自身的replication,基于日志复制模式,不同的是 Tungsten 通过Extractor控件读取mysql主库的binlog 解析成自己的日志格式--THL(Transaction History Log), 在从库上通过Applier控件写入数据库。
Tungsten Replicator 是一种MySQL复制引擎,类似于MySQL 自身的replication,基于日志复制模式,不同的是 Tungsten 通过Extractor控件读取mysql主库的binlog 解析成自己的日志格式--THL(Transaction History Log), 在从库上通过Applier控件写入数据库。

第三方数据复制引擎--Tungsten-Replicator 主要特点:
1 支持高版本MySQL向低版本复制,5.1-->5.0
2 支持跨数据库系统的复制,MySQL->PgSQL ,MySQL->MongoDB
3 支持多主库向单台Slave的复制,Multi-Master-->Slave
4 G-Replicator提取数据的更新记录写到MySQL 队列表Queue;基于这个队列,可以为其他应用服务提供便利

现在最新版本为Tungsten Replicator2.0.6,较2.0.4,安装可以用cookbook方式,cookbook提供了许多写好的安装脚本等信息;
版本信息: http://code.google.com/p/tungsten-replicator/wiki/Release_Notes
Tungsten Replicator2.0.6的WIKI: http://code.google.com/p/tungsten-replicator/w/list
Tungsten Replicator2.0.4相关文档: https://s3.amazonaws.com/release ... /content/index.html
Tungsten Replicator下载地址: http://code.google.com/p/tungsten-replicator/downloads/list

Tungsten Replicator的基本支持
一、系统要求
ruby 1.8.5 or later (ruby --version)
Ruby openssl libraries ( echo "p 'OK'" | ruby -ropenssl )
Java 1.6 or later (java -version)
GNU tar (tar --version)
rsync 并启动

二、用户权限要求
1、新建用户tungsten,且属于mysql组,这样tugsten才有权限读取MYSQL binlog目录
useradd tungsten -g mysql
2、用户必须能对所有服务器有SSH权限,且无需要密码。可通过 ssh-agent来完成

三、网络要求
1、所有用户可以通过hostname
hostname --ip-address必须返回一个IP(如果用IP方式可以不用配置host)

2、程序应用对外开放接口
3306 (MySQL database)
2112 (Tungsten THL)
10000 (Tungsten RMI)
10001 (JMX management)

四、数据库要求
1、必须支持bin-log,且不同server有不同的server-id

设置MYSQL支持bin-log
修改配置文件my.cnf

点击(此处)折叠或打开

  1. [mysqld]
  2.     # Master replication settings.
  3.     log-bin=mysql-bin
  4.     server-id=1
  5.     max_allowed_packet=48m
  6.     innodb_flush_lot_at_trx_commit=2
  7.     sync_binlog=1
注:
default-storage-engine 必须为innodb引擎
innodb_buffer_pool_size 512M为最低设置
max_allowed_packet最低设置为16M,建议48M。如果设置的较小,复制过程中将报错 "Packet for query is too large"
innodb_flush_lot_at_trx_commit=2 and sync_binlog=1 ,此设置是为防止BinLog崩溃,如未设置,install过程中会报warn
之后重新启动MYSQL

binlog-ignore-db = tungsten_tungsten

执行tungsten会往数据库里写数据,所所加上这句。不让这句写入binlog ;tungsten_服务名
2、数据库必须支持innodb
默认搜索引擎要设置为innodb
MYSQL5.1设置为,修改配置文件my.cnf

default-table-type=innodb
MYSQL5.5默认引擎为innodb,无需设置

3、必须有能所有SERVER都有权限的用户,可通过mysql -u USER -pPASSWORD -P PORT -h HOST 连接
创建Tungsten Replicator数据用户与数据库,

点击(此处)折叠或打开

  1. mysql> grant all on *.* to root@'hostIP' identified by 'password' with grant option;
  2.     mysql> grant all on *.* to tungsten@'hostIP' identified by 'password' with grant option;
注:此处除了master与slave要相互有权限之外,还要对自己的localhost有权限;

Tungsten Replicator的安装(Tungsten Replicator 2.0.4 及2.0.6亦可)
一、下载Tungsten Replicator

点击(此处)折叠或打开

cd /usr/local/src/
    wget http://tungsten-replicator.googlecode.com/files/tungsten-replicator-2.0.4.tar.gz
    tar zxvf tungsten-replicator-2.0.4.tar.gz
    mv tungsten-replicator-2.0.4 /usr/local/tungsten
    chown -R tungsten /usr/local/tungsten
二、用tungsten-installer安装master-slave模式
可通过./tools/tungsten-installer --help-all 查看所有参数
datasource-user与password 要有权限均可以master与slave中执行MYSQL权限
service-name可以随意取名
home-directory为tungsten目录
start-and-report 为配置并启动,用这个参数执行后会自动启动replicator,并且conf中写入services等相关配置

点击(此处)折叠或打开

./tools/tungsten-installer --master-slave \
    --master-host=masterhost \
    --datasource-user=tungsten \
    --datasource-password=badpwd \
    --datasource-port=3306 \
    --cluster-hosts=masterhost ,slavehost \
    --service-name=tungsten \
    --home-directory=/usr/local/tungsten \
    --start-and-report

执行过程中,可能会出现SSH权限、MYSQL权限报错、mysqldump路径报错等;
如果两个HOST的SSH端口不是默认的22,要加入参数--net-ssh-option=port=19000 \

执行中会输出 大概如下内容

点击(此处)折叠或打开

  1. ...
  2.     Processing services command...
  3.     NAME VALUE
  4.     ---- -----
  5.     appliedLastSeqno: -1
  6.     appliedLatency : -1.0
  7.     role : slave
  8.     serviceName : tungsten
  9.     serviceType : local
  10.     started : true
  11.     state : ONLINE
  12.     Finished services command...


只要SSH互通,slave暂时不需设置。
执行完成后,会同时在master\slave两台上出现tungsten_tungsten数据库、同时有replicator进程,且打开10000端口;
查看tungsten_tungsten数据库

点击(此处)折叠或打开

mysql> show tables;
    +-----------------------------+
    | Tables_in_tungsten_tungsten |
    +-----------------------------+
    | consistency |
    | heartbeat |
    | trep_commit_seqno |
    | trep_shard |
    +-----------------------------+
    4 rows in set (0.00 sec)


其中trep_commit_seqno 表会一直记录最新的binlog和最新的posttion

点击(此处)折叠或打开

  1. mysql> select * from trep_commit_seqno\G;
  2.     *************************** 1. row ***************************
  3.     task_id: 0
  4.     seqno: 0
  5.     fragno: 0
  6.     last_frag: 1
  7.     source_id: 192.168.0.12
  8.     epoch_number: 0
  9.     eventid: mysql-bin.000039:0000000000000427;140
  10.     applied_latency: 0
  11.     update_timestamp: 2013-02-18 15:28:12
  12.     shard_id: tungsten_tungsten
  13.     extract_timestamp: 2013-02-18 15:28:12
  14.     1 row in set (0.00 sec)


更新数据内容后重新执行,查看数据ID已发生变化 ,且slave端数据库已和master数据同步;

Tungsten Replicator的备份与恢复功能
Tungsten Replicator提供了简单的备份与恢复的功能 ,使用了两个简单的plugins(mysqldump and xtrabackup)
配置文件中已经默认配置了BackUp相关功能,可做相应修改
配置文件位置为/usr/local/tungsten/tungsten-replicator/conf/,列出如下几个重要参数

点击(此处)折叠或打开

  1. less tungsten-replicator/conf/static-tungsten.properties |grep backup
  2.     replicator.backup.default=mysqldump
  3.     ...
  4.     replicator.backup.agent.mysqldump.mysqldumpOptions=--opt --all-databases --add-drop-database
  5.     replicator.storage.agent.fs.directory=/usr/local/tungsten/backups/tungsten
  6.     replicator.backup.agent.mysqldump.hotBackupEnabled=true
  7.     replicator.backup.agent.xtrabackup.hotBackupEnabled=true
  8.     replicator.backup.agent.xtrabackup.options=user=${replicator.global.db.user}&password=${replicator.global.db.password}&host=${replicator.global.db.host}&port=${replicator.global.db.port}&directory=/tmp/innobackup&archive=/tmp/innobackup.tar&mysqldatadir=/var/lib/mysql/&mysql_service_command=/etc/init.d/mysql


可在配置文件中加入replicator.auto_backup=true,设置自动备份
注:备份与恢复 都要在offline的情况下执行,状态为“OFFLINE:NORMAL”,如不正常情况会出现“OFFLINE:ERROR”,则会恢复失败

查看Replicator当前状态
  1. ./tungsten-replicator/bin/trepctl status
  2. ...
  3. state : ONLINE


设置为offline状态,并备份与恢复
  1. ./tungsten-replicator/bin/trepctl status
  2. ...
  3. state : OFFLINE:NORMAL
  4. Finished status command...

  1. # ./tungsten-replicator/bin/trepctl backup
  2. Backup completed successfully; URI=storage://file-system/store-0000000003.properties

  1. # ./tungsten-replicator/bin/trepctl restore -uri storage://file-system/store-0000000003.properties
  2. Restore is pending; check log for status

查看恢复后的文件,根据conf/static-tungsten.properties配置下的备份目录查看
  1. # ls /usr/local/tungsten/backups/tungsten
  2. storage.index store-0000000002-mysqldump-1871676336962858846.sql store-0000000003.properties
  3. store-0000000001-mysqldump-341047084963524507.sql store-0000000002.properties
  4. store-0000000001.properties store-0000000003-mysqldump-4915067303150219872.sql

在Master/Slave模式下,新加Slave
在正常Master/Slave模式下,如果有其中一台Slave坏掉,不影响正常的Tungsten-Replicator运行,但如果 Master失败,则要重新都offline,然后保证数据一致性;
正常要加Slave,要同时offline 数据一致后,重新online,但因为已经有一台Slave,则可以避免Master的OFFLINE;思路为用一台Slave做一台新Slave的供体,保证两台数据一致;
1、设置slave1 为offline状态 ,然后备份数据,然后再online,online后,会自动同步offline的过程中产生的master的数据
  1. trepctl -host slave1 offline
  2. trepctl -host slave1 backup
  3. trepctl -host slave1 online

2、在新的Slave上恢复数据,然后online
  1. trepstart
  2. trepctl -host newslave restore
  3. trepctl -host newslave online

Tungstent 错误处理: http://www.lishiming.net/thread-5306-1-1.html
Tungstent 日志管理 : http://www.lishiming.net/thread-5309-1-1.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
相关文章
|
1月前
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
207 4
|
2月前
|
运维 监控 NoSQL
【MongoDB 复制集秘籍】Secondary 同步慢怎么办?深度解析与实战指南,让你的数据库飞速同步!
【8月更文挑战第24天】本文通过一个具体案例探讨了MongoDB复制集中Secondary成员同步缓慢的问题。现象表现为数据延迟增加,影响业务运行。经分析,可能的原因包括硬件资源不足、网络状况不佳、复制日志错误等。解决策略涵盖优化硬件(如增加内存、升级CPU)、调整网络配置以减少延迟以及优化MongoDB配置(例如调整`oplogSize`、启用压缩)。通过这些方法可有效提升同步效率,保证系统的稳定性和性能。
48 4
|
2月前
|
存储 SQL 关系型数据库
MySQL体系结构与配置
MySQL体系结构与配置
42 0
|
8天前
|
关系型数据库 MySQL 数据安全/隐私保护
docker应用部署---MySQL的部署配置
这篇文章介绍了如何使用Docker部署MySQL数据库,包括搜索和拉取MySQL镜像、创建容器并设置端口映射和目录映射、进入容器操作MySQL,以及如何使用外部机器连接容器中的MySQL。
docker应用部署---MySQL的部署配置
|
5天前
|
消息中间件 canal 关系型数据库
Maxwell:binlog 解析器,轻松同步 MySQL 数据
Maxwell:binlog 解析器,轻松同步 MySQL 数据
39 11
|
21天前
|
SQL 缓存 关系型数据库
MySQL高级篇——性能分析工具
MySQL的慢查询日志,用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long-query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为 10,意思是运行10秒以上(不含10秒)的语句,认为是超出了我们的最大忍耐时间值。它的主要作用是,帮助我们发现那些执行时间特别长的 SOL 查询,并且有针对性地进行优化,从而提高系统的整体效率。当我们的数据库服务器发生阻塞、运行变慢的时候,检查一下慢查询日志,找到那些慢查询,对解决问题很有帮助。
MySQL高级篇——性能分析工具
|
8天前
|
关系型数据库 MySQL Go
go抽取mysql配置到yaml配置文件
go抽取mysql配置到yaml配置文件
|
11天前
|
安全 关系型数据库 MySQL
Navicat工具设置MySQL权限的操作指南
通过上述步骤,您可以使用Navicat有效地为MySQL数据库设置和管理用户权限,确保数据库的安全性和高效管理。这个过程简化了数据库权限管理,使其既直观又易于操作。
50 4
|
11天前
|
关系型数据库 MySQL Unix
MySQL配置不区分大小写的方法
结论 通过适当配置 lower_case_table_names参数以及在数据定义和查询中选择合适的校对规则,可以灵活地控制MySQL中的大小写敏感性,以适应不同的应用场景和需求。这样的设置既可以增加数据库的兼容性,又可以在必要时利用大小写敏感性进行精确的数据处理。需要注意的是,修改 lower_case_table_names参数后,最好在数据库初始化时进行,以避免现有表名的大小写问题。
31 3
|
2月前
|
弹性计算 关系型数据库 MySQL
centos7 mysql安装及配置
本文详细介绍了在阿里云服务器ECS上通过yum源安装MySQL 8.0.12的过程,包括更新yum源、下载并安装MySQL源、解决安装过程中可能遇到的问题等步骤。此外,还介绍了如何启动MySQL服务、设置开机自启、配置登录密码、添加远程登录用户以及处理远程连接异常等问题。适合初学者参考,帮助快速搭建MySQL环境。
158 8
centos7 mysql安装及配置
下一篇
无影云桌面