添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Redis-shake介绍

Redis-shake 是阿里云自研的开源Redis数据传输工具,支持对Redis数据进行解析(decode)、恢复(restore)、备份(dump)和同步(sync或rump),易于部署,灵活高效。Redis-shake的sync(同步)模式支持全量数据迁移和增量数据迁移,详细的迁移流程如下图所示:
图 1. redis-shake迁移示意图
  • Redis实例默认仅提供内网连接地址,通过公网连接时您需要手动申请公网连接地址。具体操作,请参见 申请公网连接地址
  • 在本地设备上执行 curl ipinfo.io |grep ip 命令,获取其公网IP地址,返回示例如下: 查看公网IP结果
  • 将本地设备的公网IP地址添加至Redis实例的白名单中。具体操作,请参见 设置IP白名单
  • 安装Redis-shake。
    1. 登录待安装Redis-shake的设备,例如 ECS实例 或本地设备。
    2. 执行下述命令下载Redis-shake文件:
      wget 'http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/120287/cn_zh/1608173646665/redis-shake-v2.0.3.tar.gz'
      说明 本文以2.0.3版本为例演示操作流程,您也可以安装其他版本。更多信息,请参见 RedisShake版本列表
    3. 在安装Redis-shake的设备上,执行数据迁移。
      1. 执行下述命令进入解压后的目录并修改配置文件:
        cd redis-shake-v2.0.3/ && vim redis-shake.conf
        说明 执行命令后,系统将进入编辑界面,输入 a 可进入编辑模式。 表 1. 主要参数说明 目标Redis实例的连接地址与端口号,连接地址和端口号之间使用英文冒号(:)分隔。关于如何获取连接地址和端口号,请参见 查看连接地址
      2. ECS实例通过专有网络连接:需获取Redis实例的专有网络连接地址。
      3. 本地设备通过公网连接:需获取Redis实例的公网连接地址。
      4. 说明 如果目标实例为集群架构,您需要通过直连地址连接(网络类型为专有网络),且在填写连接地址时需要添加 master@ 前缀,例如 master@r-bp1mfnrflszg75w****.redis.rds.aliyuncs.com:6379 。关于如何申请直连地址,请参见 开通直连访问 。 r-bp1wcw2rlw76acc5k****.redis.rds.aliyuncs.com:6379 target.password_raw (必填) 目标Redis实例的账号(需具备 读写 权限)及其密码,账号和密码之间使用英文冒号(:)分隔。关于如何创建账号,请参见 创建与管理账号 。 testaccount:Rp829dlwa target.db (选填) 将源库中所有库的数据都迁移至目标库的指定库中,取值范围为 0 ~ 15
        说明 默认值为 -1 ,表示不启用该功能。 key_exists (选填) 当源库中的Key与目标库中的Key相同时,采取的数据写入策略,取值:
      5. rewrite :覆盖写入至目标库。
      6. none :默认值,停止运行Redis-shake程序并提示冲突的Key。
      7. ignore :直接跳过当前迁移的Key,保留目标库的数据,继续执行数据迁移。 rewrite filter.db.whitelist (选填) 需要迁移的库名,多个库名间用英文分号(;)分隔,默认为空,即迁移所有库。 filter.db.blacklist (选填) 不需要迁移的库名(即黑名单),多个库名间用英文分号(;)分隔。默认为空,即不设置黑名单。
      8. 按下ECS键退出编辑模式,输入 :wq 并按回车键保存配置并退出编辑界面。
      9. 执行下述命令启动Redis-shake,开始执行数据迁移:
        ./redis-shake.linux -type=sync -conf=redis-shake.conf
        Redis-shake将在屏幕上打印运行的日志信息。
        说明 如果出现提示报错,相关原因及解决方法,请参见 常见报错及解决方法 。 全量数据迁移
        2020/12/16 21:02:36 [INFO] DbSyncer[0] total = 4.00MB -       2.18MB [ 54%]  entry=52199
        2020/12/16 21:02:36 [INFO] DbSyncer[0] total = 4.00MB -       4.00MB [100%]  entry=97531
        2020/12/16 21:02:36 [INFO] DbSyncer[0] sync rdb done
        说明 当打印的日志出现 sync rdb done ,表示完成全量数据迁移,接下来进入增量数据迁移阶段。 增量数据迁移
        2020/12/16 21:03:07 [INFO] DbSyncer[0] sync:  +forwardCommands=5      +filterCommands=0      +writeBytes=5095
        2020/12/16 21:03:08 [INFO] DbSyncer[0] sync:  +forwardCommands=7      +filterCommands=0      +writeBytes=7133
        2020/12/16 21:03:09 [INFO] DbSyncer[0] sync:  +forwardCommands=0      +filterCommands=0      +writeBytes=0
        2020/12/16 21:03:10 [INFO] DbSyncer[0] sync:  +forwardCommands=645    +filterCommands=0      +writeBytes=657255
        2020/12/16 21:03:11 [INFO] DbSyncer[0] sync:  +forwardCommands=28     +filterCommands=0      +writeBytes=28532
        2020/12/16 21:03:12 [INFO] DbSyncer[0] sync:  +forwardCommands=0      +filterCommands=0      +writeBytes=0
        日志信息中各参数说明如下:
      10. forwardCommands :源库发送过来的命令数。
      11. filterCommands :被过滤的命令数,例如在Redis-shake配置文件中设置了过滤某些库。
      12. writeBytes :源库发送过来的字节数。 云数据库 Redis
        阿里云数据库 Redis 版(ApsaraDB for Redis)是兼容开源 Redis 协议的 Key-Value 类型在线存储服务。它支持字符串(String)、链表(List)、集合(Set)、有序集合(SortedSet)、哈希表(Hash)等多种数据类型,及事务(Transactions)、消息订阅与发布(Pub/Sub)等高级功能。通过“内存+硬盘”的存储方式,云数据库 Redis 版在提供高速数据读写能力的同时满足数据持久化需求。
        云数据库 RDS
        阿里云关系型数据库(Relational Database Service,简称RDS)是一种稳定可靠、可弹性伸缩的在线数据库服务。基于阿里云分布式文件系统和SSD盘高性能存储,RDS支持MySQL、SQL Server、PostgreSQL、PPAS(Postgre Plus Advanced Server,高度兼容Oracle数据库)和MariaDB引擎,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。
        数据传输服务 DTS
        数据传输(Data Transmission)是阿里云提供的一种支持RDBMS(关系型数据库)、NoSQL、OLAP等多种数据源之间数据交互的数据服务。它提供了数据迁移、实时数据订阅及数据实时同步等多种数据传输能力。通过数据传输可实现不停服数据迁移、数据异地灾备、跨境数据同步、缓存更新策略等多种业务应用场景,助您构建安全、可扩展、高可用的数据架构。
  •