8.4 使用阿里云数据传输实时同步RDS的数据__第八章 在生产中使用分析型数据库_使用手册_分析型数据库-阿里云
通过阿里云数据传输( https://www.aliyun.com/product/dts/ ),并使用 dts-ads-writer 插件, 可以将您在阿里云RDS中的数据表的变更实时同步到分析型数据库中对应的实时写入表中(RDS端目前暂时仅支持MySQL引擎)。
您需要在您RDS所在的云账号下开通阿里云数据传输服务。并 点击此处 下载dts-ads-writer插件(8月11日已更新为0.17版本,使用老版本的用户请尽快更新,MD5:0d023dd7d882bc74096e21d0c107af1a)到您的一台服务器上并解压(需要该服务器可以访问互联网,建议使用阿里云ECS以最大限度保障可用性)。服务器上需要有Java 6或以上的运行环境(JRE/JDK)。
操作步骤
- 在分析型数据库上创建目标表,数据更新类型为实时写入,字段名称和MySQL中的建议均相同,字段类型的映射见本文档 2.2节;
- 在阿里云数据传输的控制台上创建数据订阅通道 (见: https://help.aliyun.com/document_detail/dts/Getting-Started/data-subscription.html ),并记录这个通道的ID;
- 配置dts-ads-writer/app.conf文件,配置方式详见下文;
- 运行dts-ads-writer/bin/startup.sh(sh bin/startup.sh);
- 配置监控程序监控进程存活和日志中的常见错误码(见下文)。
插件目录结构
dts-ads-writer
|--bin
|--lib
|--log
|--tmp
|--dts-ads-writer.jar
|--app.conf
|--dts-ads-writer.pid
各目录和文件的含义:
- bin: 保存了启动和停止进程的脚本(startup.sh和stop.sh), 停止进程请用stop.sh执行:
sh stop.sh
- lib: 相关java依赖包
- log: 运行时产生的日志
- tmp: 临时目录
- dts-ads-writer.jar: 插件的主程序包
- app.conf: 配置文件
- dts-ads-writer.pid: 插件启动后的进程id
配置项
所有配置均保存在app.conf中,运行前请保证配置正确;修改配置后,请重启writer
基本配置:
{
"dtsAccessId": "", // 拥有数据订阅通道的云账号的accessId, 必须配置
"dtsAccessKey": "", // 拥有数据订阅通道的云账号的accessKey, 必须配置
"dtsTunnelId": "", // 数据订阅通道的id, 必须配置; 注意是id,不是通道名称
"adsUserName": "", // 访问您的分析型数据库的用户名(accessId), 必须配置
"adsPassword": "", // 访问您的分析型数据库的密码(accessKey), 必须配置
"adsJdbcUrl": "", // 访问分析型数据库的jdbc连接串, 必须配置(格式jdbc:mysql://ip:port/dbname)
"tables": [
{
"source": {
"primaryKeys": [""] // 主键定义, 必须配置; 注意RDS和分析型数据库中的主键定义必须一致
"db": "", // 源头RDS的db名称, 必须配置
"table": "", // 源头RDS的table名称, 必须配置
"skipColumns": ["col1"] // 可选,若在此配置了RDS表某列名,则该列不会同步
},
"target": {
"table": "" // 分析型数据库表的table名称, 必须配置
},
"columnMapping": {
"": "" // rds表和ads表的列对应关系:key为rds的列名, value为分析型数据库的列名,选填,不填则按照列名一一对应
},
"options": {
"traceSql": false,
"detailLog": false,
"isReplaceInvalidInsertValue": true,
"invalidInsertValueCharacters":"\\n,\\r,\\t,'" //此处若配置会自动替换无法插入分析型数据库的几种特殊字符,会修改您的数据,但是建议打开。
},
}
]
}
tables节点的配置示例, 表示rds_db库下的rds_table表对应ads_table表,并且rds_table表的col1列对应ads_table表的col1_ads列, rds_table表的col2列对应ads_table表的col2_ads列
"tables": [
{
"source": {
"primaryKeys": [
"col1",
"col2"
],
"db": "rds_db",
"table": "rds_table"
},
"target": {
"table": "ads_table"
},
"columnMapping": {
"col1": "col1_ads",
"col2": "col2_ads"
}
}
]
注意事项
- RDS表和分析型数据库中表的主键定义必须完全一致;如果不一致会出现数据不一致问题。如果需要调整RDS/分析型数据库表的主键,建议先停止writer进程;
- 一个插件进程中分析型数据库db只能是一个,由adsJdbcUrl指定;
- 一个插件进程只能对应一个数据订阅通道;如果更新通道中的订阅对象时,需要重启进程
- RDS中DDL操作不做同步处理;
- 更新app.conf需要重启插件进程才能生效;
- 如果工具出现bug或某种其它原因需要重新同步历史数据,只能回溯最近24小时的数据(在阿里云数据传输的控制台中修改消费位点);
- 插件的最大同步性能与运行插件的服务器的互联网带宽和磁盘IOPS成正比。
常见错误码
logs目录下的日志中的异常信息均以ErrorCode=XXXX ErrorMessage=XXXX形式给出,可以进行监控,具体如下:
错误码(ErrorCode) | 错误信息(ErrorMessage) | 含义 | 解决 |
---|---|---|---|
ConfigFileNotFound | missing config file: app.conf | app.conf文件没有找到 | 确认app.conf和writer.jar文件在同一路径 |
MissingConfig | missing required config: XXXX(注: XXXX为具体的配置名) | XXXX对应的配置项不存在 | 补充相应的配置 |
InvalidTableDefinition | missing RDS table definition at position: XXXX | 第XXXX项tables定义缺少rds相关定义 | 检查第XXXX项tables定义, 补充rds相应的配置 |
InvalidTableDefinition | missing ADS table definition at position: XXXX | 第XXXX项tables定义缺少目标相关定义 | 检查第XXXX项tables定义, 补充目标相应的配置 |
InvalidTableDefinition | missing required config[db] for RDS table definition at position: XXXX | 第XXXX项rds定义缺少db配置项 | 检查第XXXX项tables定义, 补充rds表的db名称 |
InvalidTableDefinition | missing required config[table] for RDS table definition at position: XXXX | 第XXXX项rds定义缺少table配置项 | 检查第XXXX项tables定义, 补充rds表的table名称 |
InvalidTableDefinition | missing required config[table] for ADS table definition at position: XXXX | 第XXXX项ads定义缺少table配置项 | 检查第XXXX项tables定义, 补充ads表的table名称 |
DtsClientError | SignatureDoesNotMatch : Specified signature is not matched with our calculation. | dtsAccessId和dtsAccessKey不正确 | 检查dtsAccessId和dtsAccessKey是否为创建dts通道的账号 |
DtsClientError | get guid info failed | dtsTunnelId配置不正确 | 从阿里云控制台确认dtsTunnelId是否为正确的dts通道id |
SqlExecutionError | execute sql exception: XXXX(注: XXXX为具体的错误) | 分析型数据库执行sql报错 | 联系技术支持查看失败原因 |
InternalError | XXXX | writer内部错误 | 联系技术支持查看失败原因 |
最后更新:2016-12-05 16:17:19
上一篇:
8.3 在BI工具中连接和使用分析型数据库__第八章 在生产中使用分析型数据库_使用手册_分析型数据库-阿里云
下一篇:
8.5 使用阿里云访问控制(RAM)__第八章 在生产中使用分析型数据库_使用手册_分析型数据库-阿里云
准备工作__快速入门_E-MapReduce-阿里云
添加后端服务器__实例管理_用户指南_负载均衡-阿里云
iOS SDK API__API手册_数据风控-阿里云
CapacityUnit__DataType_API 参考_表格存储-阿里云
使用说明-php__SDK使用参考_服务器端API_阿里云物联网套件-阿里云
查询API服务文档__API管理相关接口_API_API 网关-阿里云
日志服务监控指标__常见问题_日志服务-阿里云
2.2 记录接口访问频率__2. OCS最佳实践_开放缓存OCS 体验_体验馆-阿里云
基础监控__监控报警_用户指南_企业级分布式应用服务 EDAS-阿里云
查询媒体-使用OSS文件地址__媒体接口_API使用手册_视频点播-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云