數(shù)據(jù)投遞
本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業(yè)務造成影響,請務必仔細閱讀。
數(shù)據(jù)傳輸服務DTS(Data Transmission Service)提供的數(shù)據(jù)投遞功能,用戶可以通過SDK將各種類型的數(shù)據(jù)源投遞到DTS,再由DTS同步至目標數(shù)據(jù)庫,從而支持更多類型的數(shù)據(jù)源。
應用場景
數(shù)據(jù)投遞功能適用于以下任一場景:
源端為DTS同步方案暫不支持的數(shù)據(jù)庫類型,例如國產(chǎn)數(shù)據(jù)庫。
源端為日志數(shù)據(jù)、特殊數(shù)據(jù)類型等。
出于安全等原因,源端不能直接連接DTS,例如源庫賬號密碼不能暴露。
前提條件
已創(chuàng)建用于接收數(shù)據(jù)的目標庫實例,當前僅支持AnalyticDB PostgreSQL版。創(chuàng)建方法,請參見創(chuàng)建實例。
目標AnalyticDB PostgreSQL版實例中需已創(chuàng)建好用于接收數(shù)據(jù)的數(shù)據(jù)庫和Schema(本示例創(chuàng)建的Schema為dts_deliver_test)。創(chuàng)建方法,請參見導入數(shù)據(jù)。
若源庫的接入方式需選擇為專線/VPN網(wǎng)關(guān)/智能網(wǎng)關(guān),您需要允許DTS通過VPN網(wǎng)關(guān)訪問您的數(shù)據(jù)庫。操作方法,請參見通過VPN網(wǎng)關(guān)實現(xiàn)本地IDC與DTS云服務互通。
注意事項
使用SDK將源端數(shù)據(jù)投遞到DTS需要有一定的編碼能力。
AnalyticDB PostgreSQL版實例中的Schema名稱、投遞數(shù)據(jù)對象配置階段輸入的數(shù)據(jù)庫名稱和SDK中配置的dbName需保持一致,否則目標端可能接收不到數(shù)據(jù)。
實例創(chuàng)建后不支持修改分片數(shù)。
數(shù)據(jù)投遞實例創(chuàng)建成功后請及時使用SDK進行數(shù)據(jù)投遞,否則實例會因采集不到增量數(shù)據(jù)而失敗。
若實例運行失敗,DTS技術(shù)支持人員將在8小時內(nèi)嘗試恢復該實例。在恢復失敗實例的過程中,可能會對該實例進行重啟、調(diào)整參數(shù)等操作。
說明在調(diào)整參數(shù)時,僅會修改實例的參數(shù),不會對數(shù)據(jù)庫中的參數(shù)進行修改。可能修改的參數(shù),包括但不限于修改實例參數(shù)中的參數(shù)。
費用說明
詳情請參見計費概述。
創(chuàng)建數(shù)據(jù)投遞實例
進入同步任務的列表頁面。
在頂部菜單欄中,單擊集成與開發(fā)。
在左側(cè)導航欄,選擇 。
說明實際操作可能會因DMS的模式和布局不同,而有所差異。更多信息,請參見極簡模式和自定義DMS界面布局與樣式。
您也可以登錄新版DTS同步任務的列表頁面。
在同步任務右側(cè),選擇同步實例所屬地域。
說明新版DTS同步任務列表頁面,需要在頁面左上角選擇同步實例所屬地域。
單擊創(chuàng)建任務,配置源庫及目標庫信息。
類別
配置
說明
無
任務名稱
DTS會自動生成一個任務名稱,建議配置具有業(yè)務意義的名稱(無唯一性要求),便于后續(xù)識別。
源庫信息
選擇DMS數(shù)據(jù)庫實例
請勿選擇數(shù)據(jù)庫實例,數(shù)據(jù)投遞任務僅支持手動在下方填入數(shù)據(jù)庫信息。
數(shù)據(jù)庫類型
選擇數(shù)據(jù)投遞。
接入方式
請根據(jù)實際情況進行選擇,本示例選擇公網(wǎng)IP。
說明若您選擇為專線/VPN網(wǎng)關(guān)/智能網(wǎng)關(guān),則還需選擇VPN網(wǎng)關(guān)所屬專有網(wǎng)絡和虛擬交換機。
實例地區(qū)
選擇客戶端所在的地域。
說明若選項中沒有您數(shù)據(jù)庫所屬的地域,您可以選擇一個該數(shù)據(jù)庫距離最近的地域。
目標庫信息
選擇DMS數(shù)據(jù)庫實例
您可以按實際需求,選擇是否使用已有實例。
如使用已有實例,下方數(shù)據(jù)庫信息將自動填入,您無需重復輸入。
如不使用已有實例,您需要輸入下方的數(shù)據(jù)庫信息。
數(shù)據(jù)庫類型
選擇AnalyticDB PostgreSQL。
接入方式
選擇云實例。
實例地區(qū)
選擇目標AnalyticDB PostgreSQL版實例所屬地域。
實例ID
選擇目標AnalyticDB PostgreSQL版實例ID。
數(shù)據(jù)庫名稱
填入目標AnalyticDB PostgreSQL版實例中用于接收數(shù)據(jù)的數(shù)據(jù)庫名稱。
數(shù)據(jù)庫賬號
填入目標AnalyticDB PostgreSQL版實例的數(shù)據(jù)庫賬號,需要具有讀寫權(quán)限。創(chuàng)建賬號的方法,請參見創(chuàng)建數(shù)據(jù)庫賬號。
數(shù)據(jù)庫密碼
填入該數(shù)據(jù)庫賬號對應的密碼。
配置完成后,單擊頁面下方的測試連接以進行下一步。
如果源或目標數(shù)據(jù)庫是阿里云數(shù)據(jù)庫實例(例如RDS MySQL、云數(shù)據(jù)庫MongoDB版等),DTS會自動將對應地區(qū)DTS服務的IP地址添加到阿里云數(shù)據(jù)庫實例的白名單中;如果源或目標數(shù)據(jù)庫是ECS上的自建數(shù)據(jù)庫,DTS會自動將對應地區(qū)DTS服務的IP地址添加到ECS的安全規(guī)則中,您還需確保自建數(shù)據(jù)庫沒有限制ECS的訪問(若數(shù)據(jù)庫是集群部署在多個ECS實例,您需要手動將DTS服務對應地區(qū)的IP地址添到其余每個ECS的安全規(guī)則中);如果源或目標數(shù)據(jù)庫是IDC自建數(shù)據(jù)庫或其他云數(shù)據(jù)庫,則需要您手動添加對應地區(qū)DTS服務的IP地址,以允許來自DTS服務器的訪問。DTS服務的IP地址,請參見DTS服務器的IP地址段。
警告DTS自動添加或您手動添加DTS服務的公網(wǎng)IP地址段可能會存在安全風險,一旦使用本產(chǎn)品代表您已理解和確認其中可能存在的安全風險,并且需要您做好基本的安全防護,包括但不限于加強賬號密碼強度防范、限制各網(wǎng)段開放的端口號、內(nèi)部各API使用鑒權(quán)方式通信、定期檢查并限制不需要的網(wǎng)段,或者使用通過內(nèi)網(wǎng)(專線/VPN網(wǎng)關(guān)/智能網(wǎng)關(guān))的方式接入。
配置任務對象及高級配置。
配置
說明
目標已存在表的處理模式
預檢查并報錯攔截:檢查目標數(shù)據(jù)庫中是否有同名的表。如果目標數(shù)據(jù)庫中沒有同名的表,則通過該檢查項目;如果目標數(shù)據(jù)庫中有同名的表,則在預檢查階段提示錯誤,數(shù)據(jù)同步任務不會被啟動。
說明如果目標庫中同名的表不方便刪除或重命名,您可以更改該表在目標庫中的名稱,請參見庫表列名映射。
忽略報錯并繼續(xù)執(zhí)行:跳過目標數(shù)據(jù)庫中是否有同名表的檢查項。
警告選擇為忽略報錯并繼續(xù)執(zhí)行,可能導致數(shù)據(jù)不一致,給業(yè)務帶來風險,例如:
表結(jié)構(gòu)一致的情況下,如在目標庫遇到與源庫主鍵或唯一鍵的值相同的記錄:
全量期間,DTS會保留目標集群中的該條記錄,即源庫中的該條記錄不會同步至目標數(shù)據(jù)庫中。
增量期間,DTS不會保留目標集群中的該條記錄,即源庫中的該條記錄會覆蓋至目標數(shù)據(jù)庫中。
表結(jié)構(gòu)不一致的情況下,可能會導致無法初始化數(shù)據(jù)、只能同步部分列的數(shù)據(jù)或同步失敗,請謹慎操作。
目標庫對象名稱大小寫策略
您可以配置目標實例中同步對象的庫名、表名和列名的英文大小寫策略。默認情況下選擇DTS默認策略,您也可以選擇與源庫、目標庫默認策略保持一致。更多信息,請參見目標庫對象名稱大小寫策略。
投遞數(shù)據(jù)對象配置
單擊添加庫,并在彈出的新增數(shù)據(jù)庫對話框中,輸入源庫名稱。
重要源庫名稱需要與AnalyticDB PostgreSQL實例中的Schema名一致,本示例輸入dts_deliver_test。
若列表中已有數(shù)據(jù)庫且需要新增數(shù)據(jù)庫,您可以單擊已有庫后的添加按鈕。
單擊確定。
單擊剛添加的數(shù)據(jù)庫前的,展開數(shù)據(jù)庫列表。
單擊Table后的新增表,并在彈出的添加表對話框中,輸入源庫的表名稱。
重要源庫的表名需要與SDK中配置的tableName保持一致,本示例輸入tab1,tab2,tab3。更多信息,請參加見參數(shù)說明。
單擊確定。
(可選)配置表名和列名映射。
單擊剛創(chuàng)建的表后的編輯按鈕。
配置表名映射。
修改表名稱。
配置列名映射。
取消選中全表同步,然后修改列名稱和映射列名稱。
重要列名稱和映射列名稱需要配合SDK使用,其中列名稱為SDK中的源列名(即FakeSource.java文件中createField的name),映射列名稱為目標AnalyticDB PostgreSQL版實例中的列名。
單擊按鈕可以添加更多列。
配置完成后,單擊確定。
說明您可以根據(jù)實際情況重復操作添加、編輯、批量編輯、刪除數(shù)據(jù)庫或表。
單擊下一步高級配置,進行高級配置。
配置
說明
選擇調(diào)度該任務的專屬集群
DTS默認將任務調(diào)度到共享集群上,您無需選擇。您可以購買指定規(guī)格的專屬集群來運行DTS任務,詳情請參見什么是DTS專屬集群。
設(shè)置告警
是否設(shè)置告警,當同步失敗或延遲超過閾值后,將通知告警聯(lián)系人。
不設(shè)置:不設(shè)置告警。
設(shè)置:設(shè)置告警,您還需要設(shè)置告警閾值和告警聯(lián)系人。更多信息,請參見在配置任務過程中配置監(jiān)控告警。
源庫、目標庫無法連接后的重試時間
在同步任務啟動后,若源庫或目標庫連接失敗則DTS會報錯,并會立即進行持續(xù)的重試連接,默認持續(xù)重試時間為720分鐘,您也可以在取值范圍(10~1440分鐘)內(nèi)自定義重試時間,建議設(shè)置30分鐘以上。如果DTS在設(shè)置的重試時間內(nèi)重新連接上源庫、目標庫,同步任務將自動恢復。否則,同步任務將會失敗。
說明針對同源或者同目標的多個DTS實例,如DTS實例A和DTS實例B,設(shè)置網(wǎng)絡重試時間時A設(shè)置30分鐘,B設(shè)置60分鐘,則重試時間以低的30分鐘為準。
由于連接重試期間,DTS將收取任務運行費用,建議您根據(jù)業(yè)務需要自定義重試時間,或者在源和目標庫實例釋放后盡快釋放DTS實例。
源庫、目標庫出現(xiàn)其他問題后的重試時間
在同步任務啟動后,若源庫或目標庫出現(xiàn)非連接性的其他問題(如DDL或DML執(zhí)行異常),則DTS會報錯并會立即進行持續(xù)的重試操作,默認持續(xù)重試時間為10分鐘,您也可以在取值范圍(1~1440分鐘)內(nèi)自定義重試時間,建議設(shè)置10分鐘以上。如果DTS在設(shè)置的重試時間內(nèi)相關(guān)操作執(zhí)行成功,同步任務將自動恢復。否則,同步任務將會失敗。
重要源庫、目標庫出現(xiàn)其他問題后的重試時間的值需要小于源庫、目標庫無法連接后的重試時間的值。
是否限制增量同步速率
您也可以根據(jù)實際情況,選擇是否對增量同步任務進行限速設(shè)置(設(shè)置每秒增量遷移的行數(shù)RPS和每秒增量遷移的數(shù)據(jù)量MB),以緩解目標庫的壓力。
環(huán)境標簽
請根據(jù)實際情況,選擇用于標識實例的環(huán)境標簽。
配置ETL功能
選擇是否配置ETL功能。關(guān)于ETL的更多信息,請參見什么是ETL。
是:配置ETL功能,并在文本框中填寫數(shù)據(jù)處理語句,詳情請參見在DTS遷移或同步任務中配置ETL。
否:不配置ETL功能。
保存任務并進行預檢查。
若您需要查看調(diào)用API接口配置該實例時的參數(shù)信息,請將鼠標光標移動至下一步保存任務并預檢查按鈕上,然后單擊氣泡中的預覽OpenAPI參數(shù)。
若您無需查看或已完成查看API參數(shù),請單擊頁面下方的下一步保存任務并預檢查。
說明在同步作業(yè)正式啟動之前,會先進行預檢查。只有預檢查通過后,才能成功啟動同步作業(yè)。
如果預檢查失敗,請單擊失敗檢查項后的查看詳情,并根據(jù)提示修復后重新進行預檢查。
如果預檢查產(chǎn)生警告:
對于不可以忽略的檢查項,請單擊失敗檢查項后的查看詳情,并根據(jù)提示修復后重新進行預檢查。
對于可以忽略無需修復的檢查項,您可以依次單擊點擊確認告警詳情、確認屏蔽、確定、重新進行預檢查,跳過告警檢查項重新進行預檢查。如果選擇屏蔽告警檢查項,可能會導致數(shù)據(jù)不一致等問題,給業(yè)務帶來風險。
預檢查通過率顯示為100%時,單擊下一步購買。
在購買頁面,選擇數(shù)據(jù)同步實例的計費方式、鏈路規(guī)格,詳細說明請參見下表。
類別
參數(shù)
說明
信息配置
計費方式
預付費(包年包月):在新建實例時支付費用。適合長期需求,價格比按量付費更實惠,且購買時長越長,折扣越多。
后付費(按量付費):按小時扣費。適合短期需求,用完可立即釋放實例,節(jié)省費用。
分片數(shù)
即目標Topic的Partition(分區(qū))數(shù)量。
重要實例創(chuàng)建后不支持修改分片數(shù),請謹慎選擇。
資源組配置
實例所屬的資源組,默認為default resource group。更多信息,請參見什么是資源管理。
鏈路規(guī)格
DTS為您提供了不同性能的同步規(guī)格,同步鏈路規(guī)格的不同會影響同步速率,您可以根據(jù)業(yè)務場景進行選擇。更多信息,請參見數(shù)據(jù)同步鏈路規(guī)格說明。
訂購時長
在預付費模式下,選擇包年包月實例的時長和數(shù)量,包月可選擇1~9個月,包年可選擇1年、2年、3年和5年。
說明該選項僅在付費類型為預付費時出現(xiàn)。
配置完成后,閱讀并勾選《數(shù)據(jù)傳輸(按量付費)服務條款》。
單擊購買并啟動,并在彈出的確認對話框,單擊確定。
您可在數(shù)據(jù)同步界面查看具體任務進度。
使用SDK將源端數(shù)據(jù)投遞到DTS
配置DTS投遞的SDK。
打開IntelliJ IDEA等類似軟件,新建一個業(yè)務Project。
在新建的業(yè)務Project中,找到項目對象模型文件:pom.xml。
在pom.xml中添加如下依賴:
<dependency> <groupId>com.aliyun.dts.deliver</groupId> <artifactId>dts-deliver-client</artifactId> <version>1.0.0</version> </dependency>
說明您可以在dts-deliver-client頁面查看最新Maven依賴。
下載示例代碼,參考dts-deliver-test文件夾中的DtsDeliverTest.java文件進行投遞。示例代碼,參見使用示例代碼。
說明FakeSource.java文件中:read方法是數(shù)據(jù)來源的示例,createField中的name是源列名,您需要根據(jù)實際情況進行編碼。
在同步任務列表單擊目標數(shù)據(jù)投遞實例ID,并在左側(cè)導航欄單擊基本信息,獲取SDK示例代碼中使用的參數(shù)。
參數(shù)
說明
獲取方式
ip:port
數(shù)據(jù)投遞通道的地址。
在投遞通道信息區(qū)域,單擊公網(wǎng)地址或VPC網(wǎng)絡地址后的復制。
重要客戶端所屬的網(wǎng)絡在當前實例專有網(wǎng)絡VPC時,才可以使用VPC網(wǎng)絡地址。
ak
DTS數(shù)據(jù)投遞實例所屬賬號的AccessKey ID和AccessKey Secret。
secret
dts_job_id
說明即DTS_JOB_ID.getKey()后需要填入的信息。
DTS數(shù)據(jù)投遞實例的任務ID。
重要請勿填寫為實例ID。
您可以調(diào)用DescribeDtsJobs接口查詢。
說明投遞Topic中_vpc_與_data_delivery_間的信息即為您需要填入的dts_job_id。例如投遞Topic為cn_hangzhou_vpc_cxti86dc11z***_data_delivery_version2時,則dts_job_id需填入cxti86dc11z***。
topic
投遞的目標Topic。
在投遞通道信息區(qū)域,單擊投遞Topic后的復制。
partition
目標Topic的Partition(分區(qū))數(shù)量。
在投遞通道信息區(qū)域,查看分片數(shù)。
region
DTS數(shù)據(jù)投遞實例的地域。
在投遞通道信息區(qū)域,查看實例地域。
dbName
源端數(shù)據(jù)庫名稱,需要與AnalyticDB PostgreSQL實例中的Schema名一致。
請根據(jù)實際情況填寫,本示例為dts_deliver_test。
tableName
源端表名稱,需要與投遞數(shù)據(jù)對象配置階段輸入的表名一致。
請根據(jù)實際情況填寫,本示例為tab1、tab2、tab3。
參數(shù)配置完后,記錄當前時間并啟動SDK。
修改數(shù)據(jù)投遞實例的位點,詳情請參見修改同步或遷移實例的當前位點。
說明數(shù)據(jù)投遞實例的當前位點默認為增量寫入模塊開始運行的時間,您需要修改為SDK啟動的時間。
在目標端查看數(shù)據(jù)。