閱讀954 返回首頁    go windows


自建Redis到雲Redis實例的遷移方案__數據遷移_用戶指南_數據傳輸-阿裏雲

使用數據傳輸DTS可以進行Redis實例間的數據遷移。如果源實例為自建Redis,那麼Redis遷移支持增量數據同步功能,可以實現在本地應用不停寫的情況下,平滑完成Redis數據遷移。

本小節簡單介紹使用DTS進行Redis->雲Redis實例數據遷移的遷移流程。雲Redis實例間的遷移過程也可以參考這個流程

遷移類型簡介

當遷移源實例為自建Redis時,可以支持全量數據遷移+增量數據遷移,當遷移源實例為雲Redis實例時,目前隻支持全量數據遷移。全量數據遷移及增量數據遷移的功能及限製如下。

  • 全量數據遷移

    數據傳輸DTS將自建Redis中現有的Key全部遷移到雲Redis實例中。

  • 增量數據遷移

    增量數據遷移將遷移過程中,自建Redis實例的更新key同步到雲數據庫Redis。最終,自建Redis同雲Redis實例進入動態數據複製的過程。通過增量數據遷移,可以實現在自建Redis正常提供服務的時候,平滑完成Redis->雲 Redis實例的數據遷移。

遷移功能

Redis增量遷移支持的命令包括:
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

遷移前置條件

如果待遷移的redis是通過專線接入阿裏雲vpc的自建redis,或是專有網絡的雲Redis實例,那麼需要架設代理,進行數據轉發。
為了讓DTS能夠訪問專有網絡Redis/通過專線接入阿裏雲的自建Redis, 需要在VPC內選擇一台有公網EIP的ECS,並在ECS上部署nginx,通過nginx進行代理轉發。
對於專有網絡的Redis實例,ECS所在的VPC必須同專有網絡Redis在同一個VPC,對於通過專線接入阿裏雲的自建Redis,ECS所在的VPC必須為專線對端的阿裏雲VPC。
下麵介紹如何使用nginx進行redis的轉發配置,讓DTS服務器可以訪問專有網絡內的redis實例。

(1) nginx部署
首先在ECS服務器上,通過如下命令部署nginx。

  1. yum install nginx

(2) nginx轉發配置

安裝完nginx,修改nginx配置文件 /etc/nginx/nginx.conf , 設置後端監聽redis。 注釋掉配置文件中http的相關配置,添加tcp的配置內容。需要注釋掉的http配置內容如下:

http配置內容

需要在配置文件中添加tcp配置內容:

  1. stream{
  2. upstream backend{
  3. hash $remote_addr consistent;
  4. #設置後端Redis連接串和端口,失敗超時時間為10s,最多嚐試3次。
  5. server r-bp1b294374634044.redis.rds.aliyuncs.com:6379 max_fails=3 fail_timeout=10s;
  6. }
  7. server{
  8. # nginx訪問端口
  9. listen 3333;
  10. #指定nginx連接後端服務器的超時時間,指定為20s。
  11. proxy_connect_timeout 20s;
  12. #距離上一次成功訪問(連接或讀寫)後端服務器的時間超過了5分鍾就判定為超時,斷開此連接。
  13. proxy_timeout 5m;
  14. #將TCP連接及數據收發轉向叫“backend”的後端服務器。
  15. proxy_pass backend;
  16. }
  17. }

例如,需要訪問的redis的連接地址為: r-bp1b294374634044.redis.rds.aliyuncs.com:6379, nginx代理轉發端口為3333,那麼tcp相關配置如下:

tcp配置

(3) 通過轉發接口訪問redis

當完成上麵的配置後,運行nginx即成功啟動nginx代理服務。
假設nginx部署的ECS服務的EIP為:114.55.89.152,那麼可以直接用redis_cli訪問nginx轉發端口,測試代理轉發是否正常。

nginx測試

如上圖所示,可以通過訪問nginx代理轉發端口來訪問Redis實例。
下麵配置DTS遷移任務時,對於專有網絡Redis實例或對於通過專線接入阿裏雲的自建Redis,直接配置nginx代理的連接地址即可。
DTS支持vpc後,對於專有網絡Redis實例或者通過專線接入阿裏雲的自建Redis無需再架設代理。DTS支持vpc的產品時間參考官網通知。

遷移任務配置

當上麵的所有前置條件都配置完成後,就可以開始正式的數據遷移了。本小節以將 通過專線接入阿裏雲的自建Redis實例 到 經典網絡雲Redis實例的遷移為例,詳細介紹遷移任務配置流程。

一、進入數據傳輸DTS控製台,點擊右上角的創建遷移任務,開始配置遷移任務。

二、 實例連接信息配置

這個步驟主要配置 遷移任務名稱,自建Redis連接信息及雲Redis實例連接信息。其中:

  • 任務名稱
    DTS為每個任務自動生成一個任務名稱,任務名稱沒有唯一性要求。您可以根據需要修改任務名稱,建議為任務配置具有業務意義的名稱,便於後續的任務識別。
  • 源實例信息
    實例類型:選擇 有公網IP的自建數據庫
    實例區域:對於自建Redis,選擇跟Redis實例物理距離最近的地域。選擇的地域離Redis實例越近遷移性能越高。
    數據庫類型: 選擇 Redis
    實例模式:默認為 單機,後續DTS將支持集群模式的Redis實例
    主機名或IP地址: 自建Redis實例的訪問地址,如果配置了nginx轉發,那麼為nginx轉發的訪問地址
    端口:自建Redis實例的監聽端口。如果配置了nginx轉發,那麼為nginx轉發端口
    數據庫密碼:自建Redis實例訪問密碼,為非必填項,如果自建Redis沒有設置密碼,那麼可以不填

  • 目標實例信息
    實例類型: Redis實例
    實例區域: 實例區域為雲Redis實例所在區域
    Redis實例ID: 配置遷移的目標雲Redis實例的實例ID
    數據庫密碼:訪問Redis實例的密碼

步驟一

當連接信息配置完成後,即可點擊頁麵右下角的 授權白名單並進入下一步,開始進行遷移庫的選擇。

三、選擇遷移對象及遷移類型

在這個步驟中,需要配置遷移類型及遷移對象。

  • 遷移類型

對於Redis,DTS支持 全量數據遷移及增量數據遷移。
如果隻需要進行全量遷移,那麼遷移類型選擇:全量數據遷移。
如果需要進行源庫不停寫遷移,那麼遷移類型選擇:全量數據遷移+增量數據遷移

  • 遷移對象

這個步驟需要選擇要遷移的庫。目前Redis隻支持整庫遷移,所以隻能選擇要遷移的庫,而不能選擇要部分Key。

步驟2

四、預檢查

在遷移任務正式啟動之前,會先進行前置預檢查,隻有預檢查通過後,才能成功啟動遷移。預檢查的內容及修複方式可以參考本文末尾的 預檢查簡介 一節。

如果預檢查失敗,那麼可以點擊具體檢查項後的按鈕,查看具體的失敗詳情,並根據失敗原因修複後,重新進行預檢查。

預檢查

五、 啟動遷移任務

當預檢查通過後,可以啟動遷移任務,任務啟動成功後,可以在任務列表中查看遷移的具體狀態及遷移進度。

至此,完成自建Redis到雲Redis實例的數據遷移任務配置。

預檢查

DTS在啟動遷移之前,會進行前置預檢查,本小節簡單介紹Redis數據遷移的預檢查內容:

檢查項 檢查內容 備注
源庫連接性檢查 檢查DTS服務器跟自建Redis實例的連通性 (1) 填寫信息是否有誤?如果填寫信息有誤,請修改後重新預檢查
(2) 檢查端口是否允許從其他服務器連接訪問
目標庫連接性檢查 檢查DTS服務器跟目標Redis實例的連通性 檢查填寫信息是否有誤,如果有誤請先修改後重新預檢查
庫一對一檢查 檢查是否存在多個庫遷移到一個庫的情況 DTS暫不支持多個庫遷移到一個庫,如果出現這種情況,那麼請先修改任務配置後,重新預檢查
目標庫是否為空 檢查待遷移庫在目標Redis實例中是否為空 如果檢查失敗,請先刪除目標Redis實例中對應庫的Key後,重新預檢查
增量拓撲衝突檢查 檢查目標Redis實例上是否有其他增量遷移任務正在運行 如果檢查失敗,那麼需要結束其他的增量遷移任務後,重新預檢查

最後更新:2016-11-29 17:50:57

  上一篇:go 從本地MongoDB遷移到MongoDB實例__數據遷移_用戶指南_數據傳輸-阿裏雲
  下一篇:go RDS實例間的數據遷移__數據遷移_用戶指南_數據傳輸-阿裏雲