場景
Redis執行個體A ---> Redis執行個體B,整庫全量遷移
方案一:
mac環境
brew install npm
npm install redis-dump -g
針對RedisA: redis-dump -h host1 -p 6379 -d 1 --json > mydb.json
針對RedisB: cat mydb.json | redis-dump --convert | redis-cli
方案二:
參考: http://www.zlovezl.cn/articles/migrate-redis-server-seamlessly/, 利用redis的主從複制,從RedisA同步到RedisB,完成後,恢複RedisB的master身份。
方案三:(針對阿裡雲Redis資料遷移)
RedisA執行個體的dump.rdb檔案拷貝到一台阿裡雲ecs伺服器上,該伺服器應該能夠連接配接到RedisB執行個體,在該伺服器上自建一個redis執行個體RedisC, 并RedisC的redis.conf配置檔案中的下列配置作出修改:
# The filename where to dump the DB
dbfilename dump.rdb
# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# Also the Append Only File will be created inside this directory.
# Note that you must specify a directory here, not a file name.
dir /data/mydirectory/ #此處路徑為你拷貝過來的dump.rdb檔案所在路徑
啟動RedisC執行個體,即可導入RedisA執行個體的所有内容
方案四:
開啟使用者現有 Redis 執行個體的 AOF 功能(如果執行個體已經啟用 AOF 功能則忽略此步驟)。
# redis-cli -h old_instance_ip -p old_instance_port config set appendonly yes
通過 AOF 檔案将資料導入到新的 ApsaraDB for Redis 執行個體 (假定生成的 AOF 檔案名為 append.aof)。
# redis-cli -h aliyun_redis_instance_ip -p 6379 -a password --pipe < appendonly.aof
注意:如果原有舊的 Redis 執行個體不需要一直開啟 AOF,可在導入完成後通過以下指令關閉。
# redis-cli -h old_instance_ip -p old_instance_port config set appendonly no
-------------------------------------- 兩個阿裡雲redis執行個體間的資料遷移,綜合方案三,四 --------------------------------------------------------------
1)舊redis執行個體的*.rdb檔案拷貝到一台阿裡雲ecs伺服器(ServerA)上,執行方案三
儲存為dump.rdb到目錄 /var/lib/redis/dump.rdb
重新開機redis: service redis restart
2)執行方案四(在ServerA上運作如下指令)
redis-cli config set appendonly yes(針對本地自建redis)
redis-cli -h 新redis執行個體host -a 密碼 --pipe < /var/lib/appendonly.aof
/var/lib/appendonly.aof 表示 appendonly.aof檔案在ServerA上的絕對路徑
redis-cli config set appendonly no (針對本地自建redis)
本文轉自zsdnr 51CTO部落格,原文連結:http://blog.51cto.com/12942149/1949810,如需轉載請自行聯系原作者