⑴ 怎麼往mysql中插入實時數據
前提條件
您需要在您RDS for MySQL所在的雲賬號下開通阿里雲數據傳輸服務。並 點擊此處
下載dts-ads-writer插件到您的一台伺服器上並解壓(需要該伺服器可以訪問互聯網,建議使用阿里雲ECS以最大限度保障可用性)。伺服器上需要有Java
6或以上的運行環境(JRE/JDK)。
操作步驟
1. 在分析型資料庫上創建目標表,數據更新類型為實時寫入,欄位名稱和MySQL中的建議均相同;
2. 在阿里雲數據傳輸的控制台上創建數據訂閱通道,並記錄這個通道的ID;
(見: https://help.aliyun.com/document_detail/dts/Getting-Started/data-subscription.html),
3. 配置dts-ads-writer/app.conf文件,配置方式如下:
所有配置均保存在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為分析型資料庫的列名,選填,不填則按照列名一一對應
}
}
]
}
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"
}
}
]
注意事項:
1)RDS for MySQL表和分析型資料庫中表的主鍵定義必須完全一致;如果不一致會出現數據不一致問題。如果需要調整RDS/分析型資料庫表的主鍵,建議先停止writer進程;
2)一個插件進程中分析型資料庫db只能是一個,由adsJdbcUrl指定;
3)一個插件進程只能對應一個數據訂閱通道;如果更新通道中的訂閱對象時,需要重啟進程
4)RDS for MySQL中DDL操作不做同步處理;
5)更新app.conf需要重啟插件進程才能生效;
6)如果工具出現bug或某種其它原因需要重新同步歷史數據,只能回溯最近24小時的數據(在阿里雲數據傳輸的控制台中修改消費位點);
7)插件的最大同步性能與運行插件的伺服器的互聯網帶寬和磁碟IOPS成正比。
4. 運行dts-ads-writer/bin/startup.sh(sh bin/startup.sh);
5. 配置監控程序監控進程存活和日誌中的常見錯誤碼。
logs目錄下的日誌中的異常信息均以ErrorCode=XXXX ErrorMessage=XXXX形式給出,可以進行監控