使用通道服務、DataWorks或者DataX將Tablestore資料表中的資料同步到另一個資料表。

前提條件

已建立目標資料表,目標資料表的列必須與來源資料表中待遷移的列一一對應。具體操作,請參見建立資料表

说明 如果要實現跨帳號、跨地區資料移轉,請使用DataX工具通過互連網或者通過雲企業網連通VPC進行操作。關於使用雲企業網的具體操作,請參見雲企業網快速入門

使用通道服務遷移同步

建立來源資料表的通道後,使用SDK進行遷移同步。遷移過程中可以自訂業務處理邏輯對資料進行處理。

  1. 使用Table Store控制台或SDK建立來源資料表的通道並記錄通道ID,具體操作請分別參見快速入門使用SDK
  2. 使用SDK遷移資料。

    範例程式碼如下:

    public class TunnelTest {
    
        public static void main(String[] args){
           TunnelClient tunnelClient = new TunnelClient("endpoint",
                   "accessKeyId","accessKeySecret","instanceName");
    
            TunnelWorkerConfig config = new TunnelWorkerConfig(new SimpleProcessor());
    
            //tunnelId可以在Table Store控制台通道管理頁面查看或者調用describeTunnelRequest查詢。
            TunnelWorker worker = new TunnelWorker("tunnelId", tunnelClient, config);
            try {
                worker.connectAndWorking();
            } catch (Exception e) {
                e.printStackTrace();
                worker.shutdown();
                tunnelClient.shutdown();
            }
        }
    
        public static class SimpleProcessor implements IChannelProcessor{
        
           //目標tablestore連線物件。
           TunnelClient tunnelClient = new TunnelClient("endpoint",
                   "accessKeyId","accessKeySecret","instanceName");
                   
           @Override
            public void process(ProcessRecordsInput processRecordsInput) {
            
                //ProcessRecordsInput中返回了增量或全量資料。
                List<StreamRecord> list = processRecordsInput.getRecords();
                for(StreamRecord streamRecord : list){
                    switch (streamRecord.getRecordType()){
                        case PUT:
                            //自訂業務處理邏輯。
                            //putRow
                            break;
                        case UPDATE:
                            //updateRow
                            break;
                        case DELETE:
                            //deleteRow
                            break;
                    }
    
                    System.out.println(streamRecord.toString());
                }
            }
    
            @Override
            public void shutdown() {
                
            }
        }
    }

使用DataWorks或者DataX遷移同步

通過DataWorks或者DataX實現Tablestore資料的遷移同步,此處以DataWorks為例介紹遷移操作。

  1. 新增Table Store資料來源。

    分別以來源資料表和目標資料表所在執行個體新增Table Store資料來源。具體操作,請參見步驟三:建立同步任務

  2. 建立同步任務節點。
    1. 以專案系統管理員身份登入DataWorks控制台
      说明 僅專案系統管理員角色可以新增資料來源,其他角色的成員僅可查看資料來源。
    2. 在左側導覽列,單擊工作空間列表後,選擇地區。
    3. 工作空間列表頁面,單擊目標工作空間操作欄中的資料開發
    4. 在DataStudio控制台的資料開發頁面,單擊商務程序節點下的目標商務程序。

      如果需要建立商務程序,請參見步驟二:建立商務程序

    5. Data Integration節點上右鍵選擇建立節點 > 離線同步
    6. 建立節點對話方塊,輸入名稱,單擊提交
  3. 配置資料來源。
    1. Data Integration節點下,雙擊同步任務節點。
    2. 在同步任務節點的編輯頁面的選擇資料來源地區,配置資料來源和資料去向。
      選擇資料來源資料去向資料來源OTS並分別設定為來源資料表和目標資料表對應的資料來源,然後單擊script表徵圖或者單擊點擊轉換為指令碼,進行指令碼配置。
      重要 Table Store僅支援指令碼模式配置。
      • 配置Tablestore(OTS) Reader

        Tablestore(OTS) Reader外掛程式實現了從Tablestore讀取資料,通過您指定的抽取資料範圍,可以方便地實現資料增量抽取的需求。具體操作,請參見配置Tablestore(OTS) Reader

      • 配置Tablestore(OTS) Writer

        Tablestore(OTS) Writer通過Tablestore官方Java SDK串連到Tablestore服務端,並通過SDK寫入Tablestore服務端 。Tablestore Writer本身對於寫入過程進行了諸多最佳化,包括寫入逾時重試、異常寫入重試、批量提交等功能。具體操作,請參見配置Tablestore(OTS) Writer

    3. 單擊save表徵圖,儲存資料來源配置。
  4. 運行同步任務。
    1. 單擊start表徵圖。
    2. 參數對話方塊,選擇調度的資源群組。
    3. 單擊確定,開始運行任務。

      運行結束後,在作業記錄頁簽中可以查看任務是否成功和匯出的資料行數。

  5. (可選)定時執行同步任務。具體操作,請參見步驟四:設定周期和依賴