• redis备份恢复


    redis的几种数据导入导出方式【转】

     

    环境说明:
    202.102.221.11 redis源实例
    202.102.221.12 redis目标实例
    202.102.221.13 任意linux系统

    一、redis-dump方式

      1.安装redis-dump工具

    复制代码
    [root@202.102.221.13 ~]# yum install ruby rubygems ruby-devel -y
    # 更改gem源
    [root@202.102.221.13 ~]# gem sources -a http://ruby.taobao.org
    Error fetching http://ruby.taobao.org:
    bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)
      访问http://ruby.taobao.org,公告通知镜像维护站点已迁往Ruby China镜像
    
    #gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
    [root@202.102.221.13 ~]# gem sources --add http://gems.ruby-china.org/ --remove http://rubygems.org/
    http://gems.ruby-china.org/ added to sources
    source http://rubygems.org/ not present in cache
    [root@202.102.221.13 ~]# gem sources -l
    *** CURRENT SOURCES ***
    
    http://gems.ruby-china.org/
    [root@202.102.221.13 ~]# gem install redis-dump -V
    复制代码

      2.redis-dump导出

    [root@202.102.221.13 ~]# redis-dump -u :password@202.102.221.11:6379 > 202.102.221.11.json

      3.redis-load导入

    [root@202.102.221.13 ~]# cat 202.102.221.11.json | redis-load -u :password@202.102.221.12:6379

    二、aof导入方式

      1.源实例生成aof数据

    复制代码
    # 清空上文目标实例全部数据
    [root@202.102.221.11 ~]# redis-cli -h 202.102.221.12 -a password flushall
    OK
    # 源实例开启aof功能,将在dir目录下生成appendonly.aof文件
    [root@202.102.221.11 ~]# redis-cli -h 202.102.221.11 -a password config set appendonly yes
    OK
    复制代码

      2.目标实例导入aof数据

    复制代码
    # 假设appendonly.aof就在当前路径下
    [root@202.102.221.11 ~]# redis-cli -h 202.102.221.12 -a password --pipe < appendonly.aof
    All data transferred. Waiting for the last reply...
    Last reply received from server.
    errors: 0, replies: 5
    # 源实例关闭aof功能
    [root@202.102.221.11 ~]# redis-cli -h 202.102.221.11 -a password config set appendonly no
    OK
    复制代码

    三、rdb文件迁移方式

    (1)关闭要迁移到的服务器的redis的aof日志功能(我的要迁移到的是本机的redis6380.conf)

    vim redis6380.conf,将appendonly yes修改为appendonly no

    (2)我们先看一下当前redis的数据,并将数据用save命令固化到rdb文件中,我的rdb文件为/var/rdb/dump6379.rdb

    (3)杀掉当前redis的进程,否则下一步的复制rdb文件,rdb处于打开的状态,复制的文件,会占用同样的句柄

    (4)复制当前redis的rdb文件,名字为你要迁移的redis的rdb文件名(我的要迁移的redis的文件名为 /var/rdb/dump6380.rdb),记住,一定要杀掉当前redis的进程,还有关闭要迁移的服务器的aof功能(如果不关闭aof,默认用aof文件来恢复数据)

    (5)启动6380的redis,我们会发现,6380多出了name的数据,这个数据,就是6379固化到rdb的数据

    以上就是在不同的redis之间进行rdb的数据迁移,思路就是,复制rdb文件,然后让要迁移的redis加载这个rdb文件就ok了

    四、源实例db0迁移至目标实例db1

    复制代码
    [root@202.102.221.11 ~]# cat redis_mv.sh
    #!/bin/bash
    redis-cli -h 202.102.221.11 -p 6379 -a password -n 0 keys "*" | while read key
    do
    redis-cli -h 202.102.221.11 -p 6379 -a password -n 0 --raw dump $key | perl -pe 'chomp if eof' | redis-cli -h 202.102.221.12 -p 6379 -a password -n 1 -x restore $key 0
    echo "migrate key $key"
    done
  • 相关阅读:
    关于PCA算法的一点学习总结
    c++大作业--学籍管理系统--
    AVC1与H264的差别
    Java多线程之wait(),notify(),notifyAll()
    jquery——zTree, 完美好用的树插件
    一位Erlang程序猿的自白
    SQL Server 中关于EXCEPT和INTERSECT的使用方法
    JAVA程序猿怎么才干高速查找到学习资料?
    CFileDialog的使用方法简单介绍
    XCode 打包问题巧遇
  • 原文地址:https://www.cnblogs.com/zdqc/p/9546977.html
Copyright © 2020-2023  润新知