防暴

作者:Ajeet辛格莱

Redis Input/Output Tools (RIOT)是一套Redis的导入/导出命令行工具:

  • RIOT Redis:实时复制从任何Redis数据库(包括AWS Elasticache)到另一个Redis数据库。
  • RIOT DB:从RDBMS迁移到Redis, reresearch, RedisJSON,…

使用防暴复述,

目前可用的大多数数据库迁移工具本质上都是离线的。例如,将数据从AWS ElastiCache迁移到Redis企业云意味着备份您万博体育彩的ElastiCache数据到AWS S3桶,并使用其UI导入到Redis企业云。这意味着一些停机时间,并可能导致数据丢失。其他可用的技术包括创建源Redis服务器的时间点快照,并将更改应用到目标服务器,以保持两个服务器的同步。这听起来可能是一种很好的方法,但当您必须维护几十个脚本来实现迁移策略时,它可能具有挑战性。

RIOT Redis是一个迁移工具,允许两个Redis数据库之间的无缝实时复制。

步骤1。开始

下载最新版本并解压缩归档文件。

启动bin / riot-redis脚本并遵循提供的使用信息。

步骤2。构建和运行

git克隆https://github.com/redis-developer/riot.git
cd防暴/ riot-redis
。/ riot-redis

步骤3。通过Homebrew (macOS)安装

酿造安装jruaux /开发/ riot-redis”

使用

❯riot-redis
用法:{app} [OPTIONS] [COMMAND]
——help显示帮助信息并退出。
-V,——version打印版本信息并退出。
-q,——quiet仅日志错误
Log in debug mode(包括正常的stacktrace)
-i,——info设置日志级别为info

你可以在任何子命令上使用——help:

❯riot-redis——帮助
❯riot-redis import—help
❯riot-redis import ..hset——帮助

Redis连接选项与Redis -cli相同:

-h,——hostname=服务器主机名(默认:127.0.0.1)
-p,——port=服务器端口(默认:6379)
-s,——socket=服务器套接字(覆盖主机名和端口)
——user=用于发送ACL样式'AUTH username pass'。需要密码。
-a,——pass[=]连接服务器时使用的密码
-u,——uri=服务器uri
-o,——timeout= Redis命令超时(默认:60)
-n,——db=数据库号(默认为0)
-c,——cluster启用集群模式
-t,——tls建立安全tls连接
-l, -latency显示延迟指标
-m,——pool=最大的池连接(默认:8)

这里描述了Redis URI语法。

步骤4。例子

下面是一个活复制的例子,从源Redis运行在本地主机和端口6379,到目标Redis运行在本地主机和端口6380:

❯riot-redis -h source -p 6379 replication——idle-timeout 500 -h target -p 6380——live

第5步。验证

一旦复制完成,RIOT Redis将执行一个验证步骤,比较源数据库和目标数据库之间的值和ttl。输出如下所示:

Ok:1000 v:0 >:0 <:0 t:0
  • #相同的值

  • #不匹配的值

  • #键只存在于源数据库中

  • <: #键只存在于目标数据库中

  • TTL差大于公差的#键

步骤6。体系结构

RIOT Redis使用生产者/消费者的方法实现客户端复制:

  • 生产者连接到源Redis(例如ElastiCache),并遍历键来读取它们对应的值

  • 消费者连接到目标Redis(例如Redis Enterprise Cloud),并写入之前创建的键/值元万博体育彩组

  1. 键读取器:启动SCAN并可选地调用SUBSCRIBE以侦听键空间通知(实时复制)。
  2. 值读取器:接受键并调用DUMP和TTL。
  3. Key/Value writer:接受Key/Value /ttl元组并调用RESTORE和EXPIRE。

注意:动态复制利用了键空间通知。确保源Redis数据库启用了keyspace通知,使用Redis .conf中的notify-keyspace-events = KA或通过CONFIG SET。

备注:热复制机制不能保证数据的一致性。Redis通过pub/sub发送按键空间通知,但不提供保证交付。例如,在网络故障的情况下,RIOT Redis可能会错过一些通知。

进一步的参考

Baidu