Tungsten replicator简介

Tungsten是一套用于数据库集群和复制的软件集合,包括replication, management, SQL routing, and proxying。Ppc2009大会对这套软件专门做了介绍,下载地址如下

[url=http://sourceforge.net/project/showfiles.php?group_id=256125]http://sourceforge.net/project/showfiles.php?group_id=256125

tungsten replicator则是这套软件中用于数据复制的一个组件。通过在主从服务器上部署的java程序对主数据库的binlog进行跟踪,并将更新的内容解析出来发送到从服务器,而从服务器的java则将接收到的更新写入从数据库。

测试环境

Master1

192.168.1.8

Master2

192.168.1.4

Slave

192.168.1.7

由于tungsten replicator是java程序,因此需要各个服务器都架设jdk环境

Maser配置

下载tungsten replicator1.0.2的压缩包,解压到一个单独的目录。将conf目录下的replicator.properties.mysql重命名为replicator.properties,并根据实际情况修改以下内容:

#声明当前服务器是master模式

replicator.role=master

#服务启动后自动开始复制

replicator.auto_enable=true

#指定一个全局唯一的id,建议用服务器名

replicator.source_id=dev08

#指定用于存放复制数据的库名,在mysql手动生成一个空的库,并在my.cnf中将这个库加入binlog-ignore-db参数里。默认数据库为tungsten

replicator.schema=tungsten

#指定master的ip,本机则使用localhost

replicator.thl.remote_uri=thl://localhost/

#如果replicator.schema参数指定了其他的数据库名,则需要把tungsten改成指定的数据库名。

replicator.thl.url=jdbc:mysql://localhost/tungsten

#指定binlog文件所在的目录

replicator.extractor.mysql.binlog_dir=/usr/local/mysql/var

#指定binlog文件名的前缀

replicator.extractor.mysql.binlog_file_pattern=mysql-bin

#指定replicator程序使用的数据库用户名和密码,并在数据库中生成该用户,需要super权限。

replicator.thl.user=tungsten

replicator.thl.password=secret

replicator.applier.mysql.host=localhost

replicator.applier.mysql.port=3306

replicator.applier.mysql.user=tungsten

replicator.applier.mysql.password=secret

replicator.extractor.mysql.host=localhost

replicator.extractor.mysql.user=tungsten

replicator.extractor.mysql.password=secret

配置完成后使用bin目录下的trepsvc命令启动

Trepsvc start

用bin目录下的trepctl查看服务器状态

Trepctl status

Name

Value

===============================================

System ID

dev08

System Version:

1.0-beta5

System State:

ONLINE:MASTER

System Uptime (S): 282739.972s

State Uptime (S):

282739.351s

Error:

null

Error Exception:

null

Min Seq No:

0

Max Seq No:

179

Monitor Intvl (S): 282740.011

Extr Total:

179

Extr Last Seq No:

179

Extr/Sec:

6.330904427029223E-4

Recv Total:

0

Recv Last Seq No:

-1

Recv Source TS:

null

Recv Target TS:

null

Recv Latency (S):

0.0

Recv/Sec:

0.0

Apply Total:

0

Apply Last Seq No: -1

Apply Source TS:

null

Apply Target TS:

null

Apply Latency (S): 0.0

Apply/Sec:

0.0

State: ONLINE:MASTER

Seqno Range: 0 -> 179

当state为ONLINE:MASTER说明启动成功。

[font=Wingdings]

[/font]

Slave配置

由于要从2个master上同步数据,所以要将tungstereplicator解压到2个不同的目录,然后分别启动2个目录里的tungsten replicator程序。

基本配置和master相同,只是replicator.properties的内容不同,根据实际情况修改以下内容:

#声明本机是slave模式

replicator.role=slave

#服务启动后自动开始复制

replicator.auto_enable=true

#指定一个全局唯一的id,slave上2个replicator需要不同的id

replicator.source_id=dev071

#指定用于存放复制数据的库名,并在my.cnf中将这个库加入binlog-ignore-db参数里。2个replicator需要不同的库存放数据,在mysql里手动生成这2个空的库,并在my.cnf中将这2个库加入binlog-ignore-db参数里

replicator.schema=svnrep

#指定rmi端口,2个replicator需要指定不同端口

replicator.rmi_port=11000

#指定thl端口,2个replicator需要指定不同端口

replicator.thl.uri=thl://0.0.0.0:12112/

#指定master的ip,2个replicator指定不同master用于复制数据库。

replicator.thl.remote_uri=thl://192.168.1.4/

# replicator.schema参数,将svnrep改为实际的数据库名。

replicator.thl.url=jdbc:mysql://localhost/svnrep

其他配置与master相同。

配置完成后使用bin目录下的trepsvc命令启动

Trepsvc start

用bin目录下的trepctl查看服务器状态

Trepctl status

Name

Value

===============================================

System ID

dev071

System Version:

1.0-beta5

System State:

ONLINE:SLAVE

System Uptime (S): 6509.149s

State Uptime (S):

6325.891s

Error:

null

Error Exception:

null

Min Seq No:

0

Max Seq No:

5

Monitor Intvl (S): 6509.153

Extr Total:

0

Extr Last Seq No:

-1

Extr/Sec:

0.0

Recv Total:

2

Recv Last Seq No:

5

Recv Source TS:

2009-06-22 15:53:54.581

Recv Target TS:

2009-06-22 15:58:26.343

Recv Latency (S):

271.762

Recv/Sec:

3.072588835840643E-4

Apply Total:

1

Apply Last Seq No: 5

Apply Source TS:

2009-06-22 15:53:54.581

Apply Target TS:

2009-06-22 15:58:26.352

Apply Latency (S): 271.771

Apply/Sec:

1.536292765781721E-4

State: ONLINE:SLAVE

Seqno Range: 0 -> 5

当state为ONLINE:SLAVE时,说明已经复制成功。

由于当前版本的trepctl命令默认使用的是10000端口,所以查看端口为11000的replicator状态需要手动设置一下系统变量

export REPLICATOR_RMI_PORT=11000

然后再执行trepctl即可。

Tungsten replicator的一些特点

Tungsten replicator被定义为是异构数据库复制框架,可实现不同版本,不同种类数据库之间的数据库复制。根据官方的说明,现在可以实现mysql各版本件,以及mysql与oracle间的数据库复制,但是一些函数上限制还是不能避免。

本来测试这个软件是想用来代替mysql replication的,但是测试的效果不是很好,100万条记录同步,mysql replication需要4分10秒,tungsten replicator需要5分30秒。对行复制模式的binlog支持不是很好,对ddl语句支持不是很好。

由于tungsten replicator使用的是jdbc进行数据操作,所以一些在数据库中可以进行的操作会被jdbc认为是非法操作而导致复制中止,例如像datetime字段插入一个空字符。,所以如果web应用层不是java程序的话还是有一定风险的。而且java程序本身也需要一定的内存,当数据库的写入和更新操作比较频繁导致内存不够的时候,master上的tungsten会因为内存不够而出错,但是不会造成数据丢失,只是复制会中止。测试中我的服务器是2G内存,innodb_buffer_pool_size为1G,当我批量生成100万的数据的时候就会出错。tungsten默认最大内存为256M,可以通过修改wrapper.conf的wrapper.java.maxmemory参数来增加内存上限。

不过这个软件更新还是很快的,测试的时候还是1.0.1,测试完毕后就已经更新到1.0.2了。在这个软件的开发计划中,并行复制是比较让人期待的功能。

mysql tungsten_通过tungsten replicator实现mysql多主一从的备份架相关推荐

  1. mysql tungsten_使用tungsten将mysql的数据同步到hadoop

    背景 线上有很多的数据库在运行,后台需要一个分析用户行为的数据仓库.目前比较流行的是mysql和hadoop平台. 现在的问题是,如何将线上的mysql数据实时的同步到hadoop中,以供分析.这篇文 ...

  2. Tungsten Replicator 多环境复制工具安装方法

    Tungsten Replicator复制支持多环境,数据来源支持MySQL和Oracle,消费端支持多种数据库. 编译 1.下载代码 git clone https://github.com/vmw ...

  3. Tungsten Replicator学习总结

    之前基于Tungsten Replicator实现了内部使用的分布式数据库的数据迁移工具,此文为当时调研Tungsten Replicator时的学习心得,创建于2015.7.22. 1 概述 1.1 ...

  4. mysql limit 菜鸟_MySQL之二---MySQL菜鸟入门“秘籍”

    一.MySQL简介 1.什么是数据库 ? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不 ...

  5. mysql 5.7 xbackup_CentOS 7 下 MySQL 5.7 配置 Percona Xtrabackup

    前言 CentOS 7 下 MySQL 5.7 配置 Percona Xtrabackup ,记录一下大致的安装和配置过程. Percona XtraBackup 的备份工具支持热备份(即不必停止 M ...

  6. vba与MySQL交互_Excel、VBA与MySQL交互

    几次更新失败,我已经放弃在这里更新了,有需要可以到博客园看: ################################################################ 本文主要 ...

  7. mysql数据库建仓范式_存mysql个数

    MySQL学习笔记之数据类型详解 注:以下内容针对MySQL5.0及以上版本 MySQL的数据类型非常多,选择正确的数据类型对于获得高性能至关重要,本文是我结合网上看到的一些blog加上<高性能 ...

  8. mysql替换开头_如何在MySQL的字符串开头搜索和替换特定字符?

    为此,您可以使用INSERT().让我们首先创建一个表-mysql> create table DemoTable -> ( -> ZipCode varchar(200) -> ...

  9. mysql 集群操作系统_高性能MySQL集群详解(二)

    一.通过Keepalived搭建MySQL双主模式的高可用集群系统 1.MySQL Replication介绍: MySQL Replication是MySQL自身提供的一个主从复制功能,其实也就是一 ...

  10. mysql主从数据库含义_(转)Mysql数据库主从心得整理

    管理mysql主从有2年多了,管理过200多组mysql主从,几乎涉及到各个版本的主从,本博文属于总结性的,有一部分是摘自网络,大部分是根据自己管理的心得和经验所写,整理了一下,分享给各位同行,希望对 ...

最新文章

  1. uboot和linux内核移植,Uboot与kernel移植总结
  2. Vista中使用率最高的11条命令
  3. 我们学校也在使用IPV6
  4. vscode卸载background插件_萌妹程序员鼓励师24小时在线陪你写代码,给我吹爆这个VSCode插件...
  5. C++中的错误处理方法(含示例代码)
  6. 去中心化加密指数协议DeHive即将4月14日启动公募
  7. Android关于Paint你所知道的和不知道的一切
  8. vue 插槽的版本变化1.x-2.6.0-3.x(详细)
  9. 产品读书《设计心理学1-4》-设计
  10. She Will Be Loved
  11. 【日语】secret base
  12. 阿里P8面试官总结的《2021最新java面试题》,搞定90%以上的技术面
  13. oracle控制服务台,管理控制台服务
  14. 视频编码起源历史发展及现状
  15. c++入门 有关《c++关键字》 《命名空间》《缺省参数》《函数重载》《引用》《内联函数》《outo关键字》
  16. 百趣代谢组学文献分享:三组学整合分析在中医药研究中的应用
  17. docket-compose部署nginx时写入TZ时报错ERROR: yaml.parser.ParserError: while parsing a block collection in xxx
  18. origin三图合一_Origin9.1绘制三维(3D)叠加瀑布图的方法
  19. 数据挖掘考试(大纲)
  20. java程序添加背景音乐

热门文章

  1. 什么是北京指标?什么是北京车牌?
  2. 创建maven项目时添加自定义property属性
  3. Javafx Scene Builder使用教程
  4. 滴滴的大数据可视化效果
  5. 如何解决出现问题,你的PIN不可用,单击以重新设置PIN
  6. android电视手柄游戏,为游戏而生 Android TV的秘密武器露真容
  7. ArcGIS制图中参考比例尺
  8. 小学生数学测试软件论文,测试数学论文,关于小学生数学基本能力测试量表的贵族常模制订相关参考文献资料-免费论文范文...
  9. win10计算机图片,Win10使用系统自带的电子相册整理电脑中照片方法图解
  10. UVM糖果爱好者教程 - 22. Phasing