1 概述
1.1 介绍
Tungsten Replicator是数据库集群和复制供应商Continuent推出的高性能、开源的数据复制引擎,是Continuent最先进的集群解决方案的核心组件之一,特别适合作为异构数据库之间数据迁移的解决方案。
Tungsten Replicator最新的稳定版本是tungsten-replicator-oss-4.0.0-18,官网下载地址为:https://code.google.com/p/tungsten-replicator/wiki/Downloads
1.2 特点
Tungsten Replicator所具有的特点主要有以下几点:
1)支持高版本MySQL向低版本复制,如5.1->5.0;
2)支持跨数据库系统的复制,如MySQL->Oracle,并且所支持的数据库不仅包括MySQL、PostgreSQL和Amazon RDS等传统关系型数据库,还包括MongoDB等NoSQL数据库以及Vertica、InfiniDB、Hadoop和Amazon RedShift等数据仓库;
3)支持多种复制拓扑结构,如Master-Slave、Multi-Master、Direct、Fan-In和Star等。
1.3 其他功能
除了核心的数据复制外,Tungsten Replicator还提供了数据备份与恢复以及数据库基准测试工具等其他辅助功能点。
1.4 说明
本文档旨在阐述Tungsten Replicator的流程和实现细节,为方便起见,文中所有的解释与案例都基于源端数据库和目的端数据库均为MySQL的场景,特此说明。
2 部署与安装
2.1 准备
参与复制的所有主机都需要在部署安装前完成必要的准备工作,如增加特定用户、用户组和所需目录、修改相应权限、环境变量设置、网络配置、安装相关依赖、SSH配置和MySQL配置等。详见官方文档相关章节:http://docs.continuent.com/tungsten-replicator-4.0/prerequisite-staging.html
2.2 配置与部署
下载完Tungsten Replicator二进制包并解压后,可以利用其自带的tpm工具实现复制拓扑结构的配置和环境搭建,提供了Staging和INI两种部署方式:
1)Staging方式
通过一台Staging host(可以是集群中的某台主机,也可以是单独的)配置好一份集群的部署文件,随后使用tpm configure命令根据配置统一向所有参与复制的主机安装和配置相应服务,其部署示意图如图2.1所示。
图 2.1
2)INI方式
每台参与复制的主机各自建立并维护一个INI配置文件,分别安装相应的服务,其部署示意图如图2.2所示。
图 2.2
在此,本文以Staging的方式完成后续的部署与安装过程。以最基本的Master-Slave拓扑结构为例,Staging host上的配置命令类似如图2.3:
图 2.3
在上述配置中,很多选项和参数都使用了默认值(如端口号、文件路径和命名方式等),因此无需显式指定。在此,指定了host1作为Master,host2作为Slave,serviceName表明了本服务的名字。成功配置后,会在Staging host上生成一个deploy.cfg文件,记录了刚才的配置,可用tpm reverse命令查看。
2.3 安装
在Staging host上使用tpm install命令实现所有主机的安装与配置,此过程由Staging host负责统一完成,若途中安装失败,则回滚此次操作,命令如下:
$ tpm install serviceName–v
此过程,Staging host利用之前配置的SSH无密码连通向每台主机完成所需文件的拷贝和服务配置,若SSH的端口不是默认的22,则需加入选项--net-ssh-option=port=XXX指定。成功安装后,每台主机相应的目录中会生成若干目录和文件。
2.4 启动与监控
安装完成后,需要使用replicator start命令启动Tungsten Replicator服务,同时所配置的所有服务也同时会随之上线,启动命令为:
$ replicator start
如果成功启动,则所配置的服务进入可用状态,复制工作可正常进行。
可使用replicator status命令查看当前运行状态:
$ replicator status
2.5 服务上下线与停止
若希望将某服务下线,则使用trepctl offline命令实现:
$ trepctl -service serviceName offline
若希望将某服务重新上线,则使用trepctl online命令实现:
$ trepctl -service serviceName online
若想停止Tungsten Replicator服务,则需使用replicator stop命令,此时所有运行着的服务均会自动下线:
$ replicator stop
3 Tungsten Replicator复制引擎
3.1组件
3.1.1 角色
角色主要包括Master和Slave等,即运行该TungstenReplicator实例的主机在复制集群中扮演的角色。
3.1.2 组件
1)Re