數據增量同步 最佳實踐 數據集成(同步)用戶指南
SyncNavigator 做數據同步時所支持的資料庫類型:
支持sqlserver 2000-2014所有版本,全兼容,和MYsql 4.x 、MYsql 5.x 、MYsql 6.x版本。
來源資料庫和目標資料庫可以版本不同,比如:來源資料庫是sqlserver 2012 目標資料庫是mysql 5.5 ,都是可以的, SyncNavigator 支持跨資料庫版本,無縫傳輸數據。
只需要能連接上資料庫, SyncNavigator 可以安裝在第三方電腦上,來源資料庫和目標資料庫電腦上可以不用安裝程序。
需要同步的兩種數據
把需要同步的數據,根據數據寫入後是否會發生變化,分為不會發生變化的數據(一般是日誌數據)和會變化的數據(人員表,比如說人員的狀態會發生變化)。
示例說明
針對以上兩種數據場景,需要設計不同的同步策略。這裡以把業務RDS資料庫的數據同步到MaxCompute為例做一些說明,其他的數據源的道理是一樣。
根據等冪性原則(一個任務多次運行的結果一樣,則該任務支持重跑調度,因此該任務若出現錯誤,清理臟數據會比較容易),每次導入數據都是導入到一張單獨的表/分區里,或者覆蓋裡面的歷史記錄。
本文定義任務測試時間是2016-11-14,全量同步是在14號做的,同步歷史數據到ds=20161113這個分區里。至於本文涉及的增量同步的場景,配置了自動調度,把增量數據在15號凌晨同步到ds=20161114的分區里。數據里有一個時間欄位optime,用來表示這條數據的修改時間,從而判斷這條數據是否是增量數據。
不變的數據進行增量同步
這個場景,由於數據生成後就不會發生變化,因此可以很方便地根據數據的生成規律進行分區,較常見的是根據日期進行分區,比如每天一個分區。
數據準備
drop table if exists oplog;
create table if not exists oplog(
optime DATETIME,
uname varchar(50),
action varchar(50),
status varchar(10)
);
Insert into oplog values(str_to_date("2016-11-11","%Y-%m-%d"),"LiLei","SELECT","SUCCESS");
Insert into oplog values(str_to_date("2016-11-12","%Y-%m-%d"),"HanMM","DESC","SUCCESS");
這裡有2條數據,當成歷史數據。需先做一次全量數據同步,將歷史數據同步到昨天的分區。
操作步驟
步驟一:創建MaxCompute表
--創建好MaxCompute表,按天進行分區
create table if not exists ods_oplog(
optime datetime,
uname string,
action string,
status string
) partitioned by (ds string);
步驟二:配置同步歷史數據的任務:
因為只需要執行一次,所以只需操作一次測試即可。測試成功後,到」數據開發」模塊把任務的狀態改成暫停(最右邊的調度配置里)並重新提交/發布,避免任務自動調度執行。
查看MaxCompute表的結果:
步驟三:往RDS源頭表裡多寫一些數據作為增量數據:
insert into oplog values(CURRENT_DATE,"Jim","Update","SUCCESS");
insert into oplog values(CURRENT_DATE,"Kate","Delete","Failed");
insert into oplog values(CURRENT_DATE,"Lily","Drop","Failed");
步驟四:配置同步增量數據的任務。注意,通過配置「數據過濾」,在15號凌晨進行同步的時候,把14號源頭表全天新增的數據查詢出來,並同步到目標表增量分區里。


※dubbo+zipkin調用鏈監控
※MongoDB的聚合查詢(兩種方式)附項目源碼 轉
TAG:程序員小新人學習 |