全部產品
Search
文件中心

Tair (Redis® OSS-Compatible):使用DTS遷移Redis

更新時間:Jan 03, 2025

若您希望遷移部署在本地、ECS或其他雲上的Redis資料庫至Tair (Redis OSS-compatible),且不影響業務正常運行,您可以使用Data Transmission Service。DTS可以在不中斷資料庫服務的同時,將資料全量或者增量遷移至Tair (Redis OSS-compatible)。該方案相比使用AOF方式遷移,具有更高的效能和安全性。

功能概述

  • 全量遷移

    DTS將源庫的存量資料全部遷移到目標庫中,全量遷移不收費。

  • 增量遷移

    在全量遷移的基礎上,DTS將源庫的累加式更新即時地同步到目標庫中。若需執行增量遷移,請確保可在源庫中正常執行PSYNCSYNC命令,否則只能進行全量遷移。增量遷移會根據使用時間長度產生費用(與遷移的資料量無關),更多資訊請參見計費項目

    說明

    為保障正常執行增量遷移,建議您關閉源庫複製輸出緩衝區的限制,設定方法:串連源庫,執行CONFIG SET client-output-buffer-limit 'slave 0 0 0'

前提條件

已建立Tair (Redis OSS-compatible)執行個體,且該執行個體規格需大於自建Redis已使用的記憶體。更多資訊請參見建立執行個體

說明

建議目標資料庫總記憶體比源庫的記憶體佔用大10%以上。若因為目標資料庫記憶體不足,可能會導致資料不一致、任務失敗等問題,您需要清空目標資料庫並重新設定任務。

注意事項

遷移期間,請勿對源庫和目標庫進行擴縮容、變更配置規格、變更串連地址等操作,否則會導致任務失敗,您需重新設定任務。同時,執行遷移操作會佔用源庫和目標庫資源,建議您在業務低峰期執行。

操作步驟

  1. 進入遷移任務的列表頁面。

    1. 登入Data Management服務

    2. 在頂部功能表列中,單擊整合與開發

    3. 在左側導覽列,選擇資料轉送(DTS) > 資料移轉

  2. 單擊建立任務

  3. 配置源庫及目標庫資訊,並單擊頁面下方的測試連接以進行下一步

    類別

    配置

    說明

    任務名稱

    DTS會自動產生一個任務名稱,建議配置具有業務意義的名稱(無唯一性要求),便於後續識別。

    源庫資訊

    選擇DMS資料庫執行個體

    若您已將源庫錄入至DMS中,可在此選擇,選擇後無需填寫下方的源庫資訊。若未錄入,請忽略該選項。

    資料庫類型

    選擇Tair/Redis

    接入方式

    根據源庫的部署位置進行選擇,若執行個體在本地IDC或其他雲,請選擇公網IP

    本樣本選擇ECS自建資料庫

    執行個體地區

    選擇ECS執行個體所屬的地區,若執行個體在本地IDC或其他雲,請選擇就近源庫的地區。

    是否跨阿里雲帳號

    本樣本為同一阿里雲帳號間的遷移,選擇不跨帳號

    ECS執行個體ID

    選擇源庫所在的ECS執行個體ID。

    說明

    若源庫為叢集架構時,選擇任意節點的Master所在的ECS執行個體ID。

    執行個體模式

    根據源庫的架構選擇:

    • 單機版:標準架構(主從)。

    • 叢集版:叢集架構。若源庫為叢集架構時,在連接埠參數中填入任一Master節點的連接埠號碼。

    連接埠

    填入源Redis資料庫的連接埠,預設為6379

    認證方式

    請根據實際情況選擇密碼登入免密登入

    說明

    若自建Redis資料庫沒有設定密碼,您可以選擇免密登入

    資料庫密碼

    填入用於串連源Redis資料庫的密碼。

    說明
    • 非必填項,若沒有設定密碼可以不填。

    • 若使用自訂帳號,該帳號需要具有讀許可權,帳號、密碼的格式為<user>:<password>。例如,Redis執行個體自訂的帳號為admin,密碼為Rp829dlwa,則此處填入的資料庫密碼為admin:Rp829dlwa。

    串連方式

    請根據實際情況選擇非加密串連SSL安全連線

    說明

    若自建Redis(接入方式不是雲執行個體)且選擇了SSL安全連線,您還需要上傳CA 憑證並填寫CA 密鑰

    目標庫資訊

    選擇DMS資料庫執行個體

    若您已將目標庫錄入至DMS中,可在此選擇,選擇後無需填寫下方的目標庫資訊。若未錄入,請忽略該選項。

    資料庫類型

    將預設選擇Tair/Redis

    接入方式

    選擇雲執行個體

    執行個體地區

    選擇目標執行個體的所屬地區。

    執行個體ID

    選擇目標執行個體ID。

    認證方式

    請根據實際情況選擇密碼登入免密登入,本樣本選擇密碼登入

    說明

    雲資料庫Tair(相容Redis)執行個體沒有開啟專用網路免密訪問功能,請選擇密碼登入

    資料庫密碼

    填入串連目標資料庫的密碼。

    說明

    若使用自訂帳號,該帳號需要具有寫入權限,帳號、密碼格式為<user>:<password>。例如,Redis執行個體自訂的帳號為admin,密碼為Rp829dlwa,則此處填入的資料庫密碼為admin:Rp829dlwa。

    串連方式

    請根據實際情況選擇非加密串連SSL安全連線

  4. 配置任務對象,並單擊頁面下方的下一步進階配置

    配置

    說明

    遷移類型

    根據實際情況選擇遷移類型

    • 全量遷移 + 增量遷移(預設):使用Redis原生同步邏輯,以記憶體快照方式將資料寫入到目標端,實現源庫不停機的遷移。

      若對源庫沒有SYNC或PSYNC許可權,請選擇全量遷移

    • 全量遷移:使用SCAN命令遍曆整個源端,將遍曆到的資料寫入到目標端。為保障資料一致性,請勿在遷移期間對源執行個體寫入新的資料。

    目標已存在表的處理模式

    • 預檢查並報錯攔截(預設):檢查目標庫中是否存在資料(Key)。

      若存在,則在預檢查階段提示錯誤,且不會啟動遷移任務;若不存在,則通過。

    • 忽略報錯並繼續執行:跳過目標庫對象資料存在性檢查項,若目標庫中已存在名稱相同的Key,則會被覆蓋。

    源庫對象已選擇對象

    源庫對象框中勾選待遷移對象,然後單擊image.png將其移動至已選擇對象框。若您需要移除已選擇的對象,可以在已選擇對象框中單擊目標對象,然後單擊image.png將其移動至源庫對象

    說明

    遷移對象的選擇粒度為庫(DB 0 ~ DB 255)。

  5. 進行進階配置,並單擊頁面下方的下一步資料校正

    通常情況下,該配置項保持預設即可,更多資訊請參見附錄:進階設定說明

  6. 進行校正配置,並單擊頁面下方的下一步儲存任務並預檢查

    通常情況下,該配置項保持預設即可,更多資訊請參見在DTS同步或遷移執行個體中配置資料校正

  7. 進行預檢查,完成後單擊下一步購買

    若預檢查產生警告失敗項,請逐條確認。您可以單擊查看詳情,根據提示進行修複;您也可以單擊點擊確認警示詳情,忽略檢查項,但可能會產生資料不一致等問題,給業務帶來風險,更多資訊請參見預檢查問題。完成上述操作後,請重新進行預檢查。

  8. 購買頁配置資訊,並單擊購買並啟動

    • (可選)選擇DTS遷移鏈路所屬的資源群組配置,預設為default resource group

    • (可選)選擇DTS遷移鏈路的規格,規格越高,遷移速率越大,費用也越高,預設為large,更多資訊請參見資料移轉鏈路規格說明

    • 閱讀並勾選服務條款。

    購買後,遷移任務正式開始,您可在資料移轉介面查看具體進度。

後續步驟

  • 若您使用了增量遷移,請您在完成遷移後,在控制台手動結束或釋放該任務。

  • 您可以進行資料校正,更多資訊請參見校正遷移後的Redis資料

相關文檔

若您的資料庫無需線上遷移,您可以通過輕量級工具redis-cli,匯入AOF檔案進行資料移轉,更多資訊請參見使用AOF檔案進行遷移

常見問題

  • 為什麼測試連接失敗?

    請排查以下幾方面:

    • 帳號密碼錯誤,Redis的密碼格式為user:password,更多資訊請參見執行個體的登入方式

    • 若源庫為IDC自建資料庫或其他雲資料庫,可能存在網路防火牆,請您手動添加對應地區DTS服務的IP地址,以允許來自DTS伺服器的訪問,更多資訊請參見添加DTS伺服器的IP位址區段

  • 為什麼會運行失敗?

    • 遷移期間,若對源庫和目標庫進行擴縮容、變更配置規格、變更串連地址等操作,會導致任務失敗,您需重新設定任務。

    • 若目標執行個體記憶體空間不足,或目標執行個體為叢集架構且某分區達到了記憶體上限,DTS任務會因記憶體溢出(Out of Memory)而失敗。

    • 若目標執行個體已開啟透明資料加密TDE功能,則暫不支援通過DTS遷移資料。

  • 為什麼資料量不一致?

    • 若源庫中的某些Key使用了到期(Expire)策略,由於可能存在Key已到期但未被及時刪除的情況,所以目標庫中的Key數量可能會比源庫少。

    • 對於List列表,由於DTS在調用PSYNCSYNC傳輸資料時,不會對目標端已有的資料執行FLUSH操作,所以可能出現重複的資料。

    • 若在執行全量遷移過程中網路中斷,DTS可能會執行多次全量遷移(會自動覆蓋同名Key),若在此時對源庫執行刪除操作,則該命令不會被同步到目標庫。可能會造成目標庫大於源庫的情況。

  • 為什麼會檢查Redis逐出策略是否為noeviction

    由於雲資料庫 Tair(相容 Redis)的預設資料逐出策略(maxmemory-policy)為volatile-lru,若目標資料庫記憶體不足,觸發資料逐出會導致目標庫與源庫資料不一致的情況,但不會影響任務的正常運行。為避免該情況發生,建議將目標庫的資料逐出原則設定為noeviction,當目標庫記憶體不足時,資料會寫入失敗,同時任務也會失敗,但目標庫不會因為資料逐出而遺失資料。關於資料逐出策略詳情,請參見Redis資料逐出策略介紹

  • 源庫中為什麼會有DTS_REDIS_TIMESTAMP_HEARTBEAT

    為保障遷移、同步品質,DTS會在源庫中插入一個首碼為DTS_REDIS_TIMESTAMP_HEARTBEAT的Key用於記錄更新時間點,若源庫為叢集架構,DTS會在各個shard上均插入該Key。DTS在執行任務過程中會過濾該Key,該Key會在任務結束時自動到期。

  • 增量遷移支援哪些命令?

    • 支援如下命令:

      • APPEND

      • BITOP、BLPOP、BRPOP、BRPOPLPUSH

      • DECR、DECRBY、DEL

      • EVAL、EVALSHA、EXEC、EXPIRE、EXPIREAT

      • FLUSHALL、FLUSHDB

      • GEOADD、GETSET

      • HDEL、HINCRBY、HINCRBYFLOAT、HMSET、HSET、HSETNX

      • INCR、INCRBY、INCRBYFLOAT

      • LINSERT、LPOP、LPUSH、LPUSHX、LREM、LSET、LTRIM

      • MOVE、MSET、MSETNX、MULTI

      • PERSIST、PEXPIRE、PEXPIREAT、PFADD、PFMERGE、PSETEX、PUBLISH

      • RENAME、RENAMENX、RESTORE、RPOP、RPOPLPUSH、RPUSH、RPUSHX

      • SADD、SDIFFSTORE、SELECT、SET、SETBIT、SETEX、SETNX、SETRANGE、SINTERSTORE、SMOVE、SPOP、SREM、SUNIONSTORE

      • ZADD、ZINCRBY、ZINTERSTORE、ZREM、ZREMRANGEBYLEX、ZUNIONSTORE、ZREMRANGEBYRANK、ZREMRANGEBYSCORE

      • XADD、XCLAIM、XDEL、XAUTOCLAIM、XGROUP CREATECONSUMER、XTRIM

    • 對於通過EVAL或EVALSHA調用的Lua指令碼,由於目標端在執行指令碼時不會明確返回執行結果,DTS無法確認該類型指令碼是否執行成功。

附錄:進階設定說明

配置

說明

源庫、目標庫無法串連後的重試時間

在遷移任務串連失敗時,DTS持續地進行重試,預設重試時間為720分鐘,取值範圍為10~1440分鐘。若DTS在重試時間內恢複串連,遷移任務將自動回復。否則,遷移任務將失敗。建議您根據業務需求自訂重試時間,建議設定30分鐘以上。

重試期間,DTS將正常計費。

源庫、目標庫出現其他問題後的重試時間

在遷移期間,若源庫或目標庫出現非串連性的其他問題,DTS會報錯並持續地進行重試,預設重試時間為10分鐘,取值範圍為10~1440分鐘。若DTS在重試時間內成功執行相關操作,遷移任務將自動回復。否則,遷移任務將會失敗。建議設定10分鐘以上。

是否限制增量遷移速率

增量資料寫入時,可能會導致目標端的負載上升。您可以根據實際情況,選擇是否對增量遷移進行限速設定(設定每秒增量遷移的行數和資料量),以緩解目標端的壓力。預設為

環境標籤

您可以根據實際情況,選擇用於標識執行個體的環境標籤。

延長目標庫key的到期時間

在目標庫中,對已設定到期時間的Key,延長到期時間,預設為1800s。若遷移時Key已到期,則不會被遷移至目標庫。

使用Slave節點

當源自建Redis的執行個體模式叢集版時,您可以選擇是否從Slave節點讀取資料,預設為,即從Master讀取資料。

配置ETL功能

選擇是否配置ETL功能。關於ETL的更多資訊,請參見什麼是ETL

監控警示

是否設定警示,當同步失敗或延遲超過閾值後,將通知警示連絡人。