全部產品
Search
文件中心

Tair (Redis® OSS-Compatible):執行個體間單向遷移

更新時間:Sep 12, 2025

當您需要將一個Tair (Redis OSS-compatible)執行個體的資料移轉到另一個Tair (Redis OSS-compatible)執行個體中,若您未建立新執行個體,推薦您通過備份組複製資料閃回功能將資料複製至新執行個體,若您已建立新執行個體,建議您通過Data Transmission Service(Data Transmission Service,簡稱DTS)實現Redis執行個體(自建Redis和Tair (Redis OSS-compatible))間的單向資料移轉。DTS支援全量資料移轉和增量資料移轉,可以實現在不停服的情況下,平滑地完成資料庫的遷移。本文將簡單對比三種資料移轉方式,並詳細介紹通過DTS遷移Redis資料的詳細步驟。

Tair (Redis OSS-compatible)執行個體間資料移轉的方式對比

對比項\資料移轉方式

DTS

按備份組恢複

按時間點恢複

適用情境

遷移資料到一個已有的雲資料庫Tair(相容Redis)執行個體。

根據現有執行個體的備份資料,複製一個新執行個體。

根據現有執行個體的備份資料,複製一個新執行個體。

雲資料庫Tair(相容Redis)執行個體資料移轉費用

  • 鏈路配置費用:

    • 全量資料移轉鏈路免費。

    • 增量資料移轉鏈路隨用隨付。

  • 公網流量費用:

    資料遷出阿里雲以及接入方式為公網IP時,按流量計費。其餘情況免費。

更多計費詳情,請參見計費項目

  • 資料恢複:免費。

  • 建立新執行個體:需支付新執行個體的費用。

  • 資料恢複:試用期間,可免費恢複7天內資料。詳情請參見費用說明

  • 建立新執行個體:需支付新執行個體的費用。

遷移粒度

庫粒度。

執行個體粒度:恢複執行個體中指定備份組中的所有資料。

  • 執行個體粒度:恢複執行個體中指定時間點的所有資料。

  • Key粒度:恢複指定的Key。

是否支援增量遷移

支援。

不支援。

不支援。

跨地區遷移

支援。

不支援。

不支援。

不同資料庫版本間的資料移轉

支援1

不支援。

不支援。

不同架構的資料移轉

支援2

部分支援2

部分支援2

重要

1使用DTS遷移時,建議源庫和目標庫的資料庫版本一致,避免發生相容性問題。

2如需將標準架構執行個體的資料移轉到叢集架構或讀寫分離架構,請先瞭解叢集架構和讀寫分離架構命令限制。請參見叢集架構與讀寫分離執行個體的命令限制

DTS功能概述

  • 全量遷移

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

  • 增量遷移

    在全量遷移的基礎上,DTS將源庫的累加式更新即時地同步到目標庫中。增量遷移會根據使用時間長度產生費用(與遷移的資料量無關),更多資訊請參見計費項目

前提條件

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

說明

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

注意事項

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

操作步驟

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

    1. 登入Data Management服務

    2. 在頂部功能表列中,選擇Data + AI > 資料轉送(DTS) > 資料移轉

    3. 遷移任務右側,選擇待遷移執行個體所屬的地區。

  2. 單擊建立任務

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

    類別

    配置

    說明

    任務名稱

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

    源庫資訊

    選擇DMS資料庫執行個體

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

    資料庫類型

    選擇Tair/Redis

    接入方式

    根據源庫的部署位置進行選擇,本樣本選擇雲執行個體

    執行個體地區

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

    是否跨阿里雲帳號

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

    執行個體ID

    選擇源庫的執行個體ID。

    認證方式

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

    說明

    若執行個體沒有開啟專用網路免密訪問功能,請選擇密碼登入

    資料庫密碼

    填入串連源執行個體的帳號密碼。

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

    • 資料庫密碼格式為<user>:<password>。例如,執行個體自訂的使用者名稱為admin,密碼為Rp829dlwa,則此處填入的資料庫密碼為admin:Rp829dlwa。

    目標庫資訊

    選擇DMS資料庫執行個體

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

    資料庫類型

    將預設選擇Tair/Redis

    接入方式

    選擇雲執行個體

    執行個體地區

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

    執行個體ID

    選擇目標執行個體ID。

    認證方式

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

    說明

    若執行個體沒有開啟專用網路免密訪問功能,請選擇密碼登入

    資料庫密碼

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

    說明

    資料庫密碼格式為<user>:<password>。例如,Redis執行個體自訂的使用者名稱為admin,密碼為Rp829dlwa,則此處填入的資料庫密碼為admin:Rp829dlwa。

  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,更多資訊請參見資料移轉鏈路規格說明

    • 閱讀並勾選服務條款。

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

後續步驟

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

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

相關文檔

如果您希望將雲資料庫Tair(相容Redis)執行個體的全量資料複製至一個新的雲資料庫Tair(相容Redis)執行個體,可以考慮通過備份恢複的方式實現。通過備份恢複將資料複製到新執行個體與通過DTS遷移資料的區別,請參見雲資料庫 Tair(相容 Redis)執行個體間資料移轉的方式對比

詳細操作,請參見按備份組恢複按時間點恢複

常見問題

  • 為什麼測試連接失敗?

    請排查以下幾方面:

    • 帳號密碼錯誤,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),若在此時對源庫執行刪除操作,則該命令不會被同步到目標庫。可能會造成目標庫大於源庫的情況。

  • Q:為什麼無法選擇雲資料庫Tair(相容Redis) 2.8版本執行個體?

    A:DTS不支援雲資料庫Tair(相容Redis) 2.8版本執行個體。

  • 為什麼會檢查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無法確認該類型指令碼是否執行成功。