1034
阿裏雲
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-阿裏雲