全部產品
Search
文件中心

ApsaraDB for MongoDB:使用NimoFullCheck校正遷移資料的一致性

更新時間:Jun 19, 2024

NimoFullCheck是阿里雲自主研發的用於檢驗源端DynamoDB和目的端MongoDB資料一致性的工具。本文檔介紹如何使用NimoFullCheck進行一致性校正。

前提條件

您已通過NimoShake將DynamoDB遷移到阿里雲資料庫。詳情請參見使用NimoShake將Amazon DynamoDB遷移至阿里雲

背景資訊

在通過NimoShake將DynamoDB遷移到阿里雲資料庫之後,您可以使用NimoFullCheck工具對兩端的資料進行一致性校正。

校正主要分為如下兩個部分:

  • 輪廓校正:輪廓校正會對DynamoDB表以及MongoDB集合中數目的一致性進行校正,如果數目不一致則直接退出,終止後續的校正,並在螢幕上列印錯誤資訊,便於您定位錯誤原因。

  • 精確校正:輪廓校正通過後會進入精確校正階段。精確校正從源端拉取資料並解析,如果有唯一索引則根據唯一索引對比MongoDB資料的一致性。如果沒有唯一索引則逐一對比兩端所有資料(速度較慢)。

注意事項

  • NimoFullCheck僅支援針對全量資料移轉的校正。如果在增量同步處理階段使用NimoShake進行校正,那麼得到的結果必然是不一致。

  • NimoFullCheck僅支援單向校正,即僅支援以MongoDB端的資料為基準對DynamoDB的資料進行一致性校正。

操作步驟

本步驟以Ubuntu系統為例,介紹如何使用NimoFullCheck校正DynamoDB和MongoDB的一致性。

  1. 在系統中執行如下命令下載NimoShake包,等待下載完成。

    wget https://github.com/alibaba/NimoShake/releases/download/release-v1.0.0-20191015/nimo.tar.gz
    說明

    建議下載最新版本的NimoShake包,下載地址請參見NimoShake

  2. 執行如下命令解壓NimoShake包。

    tar zxvf nimo.tar.gz
  3. 解壓完成後,輸入cd nimo命令進入nimo檔案夾。

  4. 執行如下格式的命令對NimoFullCheck注入必要參數並開始校正。

    ./nimo-full-check.linux --<參數名>=<值> --<參數名>=<值>

    各參數的說明如下所示:NimoFullCheck參數

    參數名

    說明

    樣本值

    id

    遷移任務ID。即您在使用NimoShake進行遷移的時候設定的ID,詳情請參見使用NimoShake將Amazon DynamoDB遷移至阿里雲

    --id=nimo-shake

    logLevel

    日誌的等級,取值:

    • none:不列印日誌。

    • error:包含錯誤層級資訊的日誌。

    • warn:包含警告層級資訊的日誌。

    • info:反饋當前系統狀態的日誌。

    • debug:包含調試資訊的日誌。

    預設值:info。

    --logLevel=info

    sourceAccessKeyID

    DynamoDB端的AccessKey ID。

    --sourceAccessKeyID=xxxxxxxxxx

    sourceSecretAccessKey

    DynamoDB端的AccessKey。

    --sourceSecretAccessKey=xxxxxxxxxx

    sourceSessionToken

    DynamoDB端的臨時密鑰,如沒有可以不配置。

    --sourceSessionToken=xxxxxxxxxx

    sourceRegion

    DynamoDB所屬的地區,如沒有可以不配置。

    --sourceRegion=us-east-2

    qpsFull

    Scan命令對錶執行的頻率,表示每秒鐘最多調用多少次Scan。預設值:10000。

    --qpsFull=10000

    qpsFullBatchNum

    每秒拉取多少條資料。預設值:128。

    --qpsFullBatchNum=128

    targetAddress

    目的端MongoDB的串連地址。查看MongoDB的地址資訊,請參見複本集執行個體串連說明分區叢集執行個體串連說明

    地址樣本:mongodb://username:password@s-*****-pub.mongodb.rds.aliyuncs.com:3717

    --targetAddress=mongodb://username:password@s-*****-pub.mongodb.rds.aliyuncs.com:3717

    diffOutputFile

    設定儲存差異化結果的檔案名稱。如不填寫則預設為nimo-full-check-diff

    --diffOutputFile=nimo-full-check-diff

    parallel

    使用多少條線程進行一致性校正。預設值:16。

    --parallel=16

    sample

    設定校正時每個表採樣的頻率,0為對比表中所有內容。預設值:1000。(1000代表一個表中最多選取1000個文檔進行對比)

    --sample=1000

    filterCollectionWhite

    一致性校正白名單。設定需要通過一致性校正的表名。如--filterCollectionWhite = c1;c2表示僅對C1和C2表進行一致性校正,剩下的表全部過濾。

    --filterCollectionWhite=ci;c2

    filterCollectionBlack

    一致性校正黑名單。設定不需要通過一致性校正的表名。如--filterCollectionBlack = c1;c2表示除了C1和C2表,剩下的表全部需要通過一致性校正。

    --filterCollectionBlack=ci;c2

    convertType

    遷移階段是否對Dynamo協議進行了轉換。取值:

    • raw:不對Dynamo協議進行轉換,直接寫入。

    • change:對Dynamo協議進行轉換。如:將{"hello":"1"}轉換為{"hello": 1}

    說明

    需要和遷移階段中選擇的結果保持一致,如果不一致則檢驗失敗。

    --convertType=change

    version

    列印當前NimoFullCheck的版本號碼。

    說明

    此參數沒有值,如需列印NimoFullCheck版本號碼,直接加上--version欄位即可。

    --version

    help

    顯示NimoFullCheck支援的所有參數資訊。

    --help

    說明

    校正成功後,螢幕上會列印full check done! ,如果中途出錯導致校正終止,程式會自動關閉並在螢幕上列印對應的錯誤資訊,便於您定位錯誤原因。