zoukankan      html  css  js  c++  java
  • 用redis-dump工具对redis集群所有数据进行导出导入

    安装redis-dump

    redis-dump是基于ruby开发,需要ruby环境,而且新版本的redis-dump要求2.2.2以上的ruby版本,centos中yum只能安装2.0版本的ruby。需要先安装ruby的管理工具rvm安装高版本的ruby

    安装rvm

    可参考官网:http://rvm.io/
    执行下列两个命令安装rvm;

    # gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
    
    # curl -sSL https://get.rvm.io | bash -s stable
    
    # find / -name rvm -print
    /usr/local/rvm
    /usr/local/rvm/scripts/rvm
    /usr/local/rvm/bin/rvm
    /usr/local/rvm/src/rvm
    /usr/local/rvm/src/rvm/scripts/rvm
    /usr/local/rvm/src/rvm/bin/rvm
    /usr/local/rvm/src/rvm/lib/rvm
    /usr/local/rvm/lib/rvm
    
    #使rvm生效
    source /usr/local/rvm/scripts/rvm
    

    安装ruby

    # 查看可以安装的Ruby版本
    rvm list known 
    # 当前最高的稳定版本是2.5.1
    rvm install ruby 2.5.1
    #查看ruby版本
    ruby --version
    

    安装redis-dump

    # 移除gem自带源,国内连不上
    gem sources --remove https://rubygems.org/ 
    # 添加国内淘宝源
    gem sources -a https://ruby.taobao.org/ 
    # 安装redis-dump
    gem install redis-dump –V
    
    #查看redis-dump版本,安装成功可以开心的备份和还原redis了
    redis-dump -v
    redis-dump v0.4.0
    

    使用redis-dump导出数据

    redis转存储json

    redis-dump -u 127.0.0.1:6378 -a password > redis_6378.json
    

    json还原redis

    < redis_6378.json redis-load -u 127.0.0.1 -a password
    

    Redis集群数据导出导入

    如果是redis集群模式,需要对集群各个实例分别导出导入,如下所示:

    数据导出

    命令(redis-dump -u :password@host:port -d 0 > fileName.json)无密码可省略

    redis-dump -u IP1:6379 -d 0 > 6379.json
    redis-dump -u IP2:6380 -d 0 > 6380.json
    redis-dump -u IP3:6381 -d 0 > 6381.json
    

    执行完成命令之后,生成3个json文件,即为集群节点数据,为提升导入效率,可以将文件拷贝到目标集群机进行导入,也可以直接在本机导入。

    数据导入

    命令(cat filename.json | redis-load -u :password@host:port -d 0)无密码可省略

    cat 6379.json | redis-load -u IP4:6379 -d 0
    cat 6380.json | redis-load -u IP5:6379 -d 0
    cat 6380.json | redis-load -u IP6:6380 -d 0
    

    注意:导入时json文件源集群节点和目的集群节点键所在的槽要对应,如果json的槽不是由导入节点处理的,会报错:提示MOVED 13596 host:port

    异常处理

    执行redis-dump命令时如果报ERR unknown command 'keys'异常

    原因:keys命令用于全局查询 一般不建议使用所以能在redis.conf中配置了禁用该命令 。
    解决方案: 检查redis.conf 中是否有该命令禁用配置

        rename-command FLUSHALL ""  清空所有的库数据
        rename-command FLUSHDB ""      清空当前库数据
        rename-command KEYS ""        查询所有库数据 (因为数据量大时,执行此操作会消耗大量的资源 一般不建议使用该命令)
    如果有注释掉即可 !
    
  • 相关阅读:
    JavaScript.对象分类
    基于NDK的Android防破解& Android防破解 【转载】
    C++ 关键字——friend【转载】
    Python基础教程学习笔记:第二章 列表和元组
    Android安装器学习笔记(一)
    Python基础教程学习笔记:第一章 基础知识
    Android重写HorizontalScrollView仿ViewPager效果
    C语言realloc,malloc,calloc的区别【转载】
    Objective-C 协议和运行时检查方法、类是否存在
    下拉刷新 上拉更多 支持ListView GridView WebView【转载】
  • 原文地址:https://www.cnblogs.com/xiaodf/p/10917278.html
Copyright © 2011-2022 走看看