使用redis-dump-load工具導入導出redis數據
需求環境
Redis-dump-load是基於python2.7,利用redis模塊編寫的一個導出/導入redis數據的一個python程序,因此,需求環境如下:
python 2.7
pip2.7
python.redis模塊
安裝程序
# pip-2.7 install redis # cd /usr/local # git clone https://github.com/p/redis-dump-load.git # cd redis-dump-load # ./redisdl.py --help
導出數據
假設內網有redis:192.168.1.20:6379,現可利用redisdl.py程序導出該redis數據到本地的json文件:
# python redisdl.py -H 192.168.1.20 -p 6379 -d 0 -o /tmp/db0.json # ll /tmp/db0.json -rw-r--r--. 1 root root 411772591 Oct 17 09:15 /tmp/db0.json
利用以上命令導出192.168.1.20:6379實例中的db0數據到本地/tmp/db0.json文件中,從info信息中可以看到db0一共有1758個key數據。
註:
執行導出數據命令時,若出現類似decode(encoding)的字符類編碼錯誤時,可將程序中‘decode(encoding)’改為如下:
decode(‘utf-8‘,‘ignore‘)
導入數據—redis單實例
準備一個空的redis單實例:192.168.204.128:6379,把之前導出的/tmp/db0.json文件數據導入。
# python redisdl.py -l -H 192.168.204.128 -p 6379 -d 0 /tmp/db0.json
可以看到數據已導入,導入了1756個key,與上述看到1758個key相差了兩個,大部分的key數據已導入到新的redis實例中,缺失的2個key應該是在導出數據後源redis新增的key數據。
導入數據—redis_cluster
準備一個空的redis_cluster集群(192.168.1.20:8001/8002/8003),並部署corvus(redis-porxy:192.168.1.20:12345),可以利用corvus把之前到處/tmp/db0.json文件數據導入到集群中去。
集群信息:
# /path/to/redis/redis-trib.rbcheck 192.168.1.20:8001
# redis-cli -h 192.168.1.20 -p 12345 info
數據導入:
# python redisdl.py -l -H 192.168.1.20 -p 12345 -d 0 /tmp/db0.json
分別查看8001、8002、8003三個單獨rediscluster實例,可以看到通過corvus導入的數據已經分攤到各redis實例中,分別為545、626、584個keys。總數據為1755(導入後一個key過期了)。
註:
redisdl.py導入數據時,會去檢查redis的版本,由於使用corvus時,檢查出的版本為corvus版本,比redis3.0+的版本低,故執行時會報錯,需手動更改redisdl.py腳本:
# vi redisdl.py # version = [int(part) for part inself.info()[‘redis_version‘].split(‘.‘)] version = 3
本文出自 “扮演上帝的小醜” 博客,請務必保留此出處http://icenycmh.blog.51cto.com/4077647/1978295
使用redis-dump-load工具導入導出redis數據