zoukankan      html  css  js  c++  java
  • Redis-shake进行数据迁移

    Redis-shake是阿里云自研的开源工具,支持对Redis数据进行解析(decode)、恢复(restore)、备份(dump)、同步(sync/rump)。在sync模式下,redis-shake使用SYNC或PSYNC命令将数据从源端Redis同步到目的端Redis,支持全量数据同步和增量数据同步,增量同步在全量同步完成后自动开始。该模式支持自建Redis上云、自建Redis与云数据库Redis版的同步以及自建Redis之间的同步等场景。

    基本原理

    redis-shake的基本原理就是模拟一个从节点加入源redis集群,首先进行全量拉取并回放,然后进行增量的拉取(通过psync命令)。如下图所示:

     

    Redis数据迁移方案:

    目的:迁移指定集群实例中的某个或某几个db,到目的集群实例的相同或不同名称的db中 

    1、登录可以连接云数据库Redis版实例(目的端Redis)的ECS
    在ECS中下载redis-shake,建议您下载最新发布的版本。
     
    2、从阿里云Redis集群版1下载相应的所有节点的多个rdb文件
    需要说明的是目前云数据库Redis集群版不支持 "-type=dump" ,所以需要手动分别进行下载RDB文件。
    # wget "http://rdsbak-bj-v4.oss-cn-beijing-internal.aliyuncs.com/custins15126079/hins7955323_data_20200320040814.rdb?OSSAccessKeyId=LTAI34hcUqqtkmRx&Expires=1584842821&Signature=IlNJpe1lBT%3BWPd0KEGVklKiZ02U%3D" -O hins7955323_data_20200320040814.rdb
     
    3、修改配置文件redis-shake.conf,restore模式涉及的主要参数说明如下
    source.rdb.input            备份文件(RDB文件)的路径,可使用相对路径或绝对路径,支持输入列表,例如:rdb.0;rdb.1;rdb.2,将会挨个进行恢复
    target.address              目的Redis的连接地址与端口号
    target.password_raw     目的Redis的连接密码
    target.db  2                  设置待迁移的数据在目的Redis中的的逻辑数据库名,默认值为-1例如,要将所有数据迁移到目的Redis中的DB10,则需将此参数的值设置为10。当该值设置为-1时,逻辑数据库名在源Redis和目的                                          Redis中的名称相同,即源Redis中的DB0将被迁移至目的Redis中的DB0,DB1将被迁移至DB1,以此类推
    rewrite                        如果目的Redis有与RDB文件中相同的key,是否覆盖,true或false
    filter.db.whitelist  2或3  指定的db被通过,比如0;5;10将会使db0, db5, db10通过, 其他的被过滤
    parallel                        RDB文件同步中使用的并发线程数,用于提高同步性能
     
    上面演示的是迁移db2或db3中的数据到目标实例的db2中 
     
    4、使用如下命令进行迁移
    # ./redis-shake -type=restore -conf=redis-shake.conf
    日志中出现restore: rdb done表示数据恢复完成,此时按Ctrl+C退出执行即可
     
     
     
     
     
     
     
     
  • 相关阅读:
    java中Array/List/Map/Object与Json互相转换详解
    推荐几款开源的js日期控件
    12款优秀的 JavaScript 日历和时间选择控件
    12款优秀的 JavaScript 日历和时间选择控件
    StringTokenizer(字符串分隔解析类型)
    StringTokenizer(字符串分隔解析类型)
    javascript中的undefined 和 not defined
    javascript中的undefined 和 not defined
    6.静态函数库设计
    5. Linux应用程序地址布局
  • 原文地址:https://www.cnblogs.com/wjoyxt/p/12529106.html
Copyright © 2011-2022 走看看