场景描述

Redis Cluster 和 Redis Standalone 可通过 RedisShake 进行同集群或跨集群的数据异步复制,实现灾备和多活的业务场景,同时也免去双写的业务开销。RedisShake 的基本原理则是模拟一个从节点加入源 Redis 集群进行全量拉取并回放,然后进行增量的拉取(通过 psync 命令)实现目的集群与源集群的异步复制。

约束与限制

  • 源集群支持以下版本:

    • Redis Cluster 6.x

    • Redis Cluster 5.x

    • Redis Standalone 6.x

    • Redis Standalone 5.x

  • 目的集群支持以下版本:

    • Redis Cluster 6.x

    • Redis Cluster 5.x

    • Redis Standalone 6.x

    • Redis Standalone 5.x

前提条件

  • 已创建源集群和目的集群。

  • 已获取源集群和目的集群的类型和 IP 地址。

操作步骤

进入 RedisShake 集群创建界面。

说明

RedisShake 环境入口请提交工单或联系管理员获取。

第1步:基本设置

  1. 在顶部区域下拉框中,选择部署区域。

  2. 填写 RedisShake 集群的基本信息,包括:名称、描述、选择版本、计费方式、自动备份时间和可用区。

    基本设置

第2步:节点设置

选择主机类型、CPU和内存规格。主机类型推荐选择企业型 e3,实际请根据集群情况选择规格。

节点设置

第3步:网络设置

选择 VPC 网络、私有网络以及节点 IP 类型。

说明

VPC 网络和私有网络需选择能够同时访问到源集群与目标集群的网络。

网络设置

第4步:服务环境参数设置

  1. 填写必填参数,点击更多服务环境参数并根据实际需求填写。

    参数说明请参见 RedisShake 参数介绍

    填写参数
  2. 点击校验表单参数

  3. 待提示校验成功,点击提交

第5步:查看异步复制监控

待 RedisShake 集群创建成功,集群状态为活跃,集群节点服务状态为正常。在节点页签服务和资源监控页面可查看集群异步复制情况。

查看

RedisShake 参数介绍

参数 取值范围 参数说明

source.type

  • standalone

  • 集群

源集群 Redis 的类型,必填。

  • standalone:表示 Redis Standalone 集群。

  • 集群:表示 Redis Cluster 集群。

source.address

-

源 Redis 地址,必填。

  • 集群类型选择 standalone 时对应集群地址需填写 VIP 地址,例如:172.22.4.253:6379。

  • 集群类型选择集群时对应集群地址需填写所有节点 IP 地址,例如:"172.22.4.2:6379;172.22…​;172.22.4.7:6379"。
    注意:多个 IP 地址必须加双引号 ""

target.type

  • standalone

  • 集群

目标集群 Redis 的类型,必填。

  • standalone:表示 Redis Standalone 集群。

  • 集群:表示 Redis Cluster 集群。

target.address

-

目标 Redis 地址,必填。

  • 集群类型选择 standalone 时对应集群地址需填写 VIP 地址,例如:172.22.4.253:6379。

  • 集群类型选择集群时对应集群地址需填写所有节点 IP 地址,例如:"172.22.4.2:6379;172.22…​;172.22.4.7:6379"。
    注意:多个 IP 地址必须加双引号 ""

parallel

1 - 256

启动多少个并发线程同步一个 RDB 文件,默认值为 32。

source.password_raw

-

源端密码,留空表示无密码。

target.password_raw

-

目标端密码,留空表示无密码。

fake_time

-

用于处理过期的键值,当迁移两端不一致的时候,目的端需要加上这个值。

key_exists

  • rewrite

  • -

  • ignore

当源目的有重复 key 时是否进行覆写。

  • -: 一旦发生进程直接退出。

  • rewrite: 源端覆盖目的端。

  • ignore: 保留目的端key,忽略源端的同步 key。

filter.db.whitelist

-

指定的 db 被通过,比如 0;5;10 将会使 db0,db5,db10 通过, 其他的被过滤。

filter.db.blacklist

-

指定的 db 被过滤,比如 0;5;10 将会使 db0,db5,db10 过滤,其他的被通过。

filter.key.whitelist

-

支持按前缀过滤 key,只让指定前缀的 key 通过,分号分隔。比如指定 abc,将会通过 abc,abc1,abcxxx。

filter.key.blacklist

-

支持按前缀过滤 key,不让指定前缀的 key 通过,分号分隔。比如指定 abc,将会阻塞abc,abc1,abcxxx。

filter.slot

-

指定过滤slot,只让指定的 slot 通过。

filter.lua

  • true

  • false

控制不让 lua 脚本通过,true 表示不通过。默认为 false。

big_key_threshold

-

如果目的端大版本小于源端, 也建议设置为 1。默认值为 524288000。

keep_alive

-

TCP keep-alive 保活参数,单位秒,0 表示不启用。

qps

-

同步 QPS 上限,默认值为 200000。

resume_from_break_point

  • true

  • false

断点传续开关。

log.level

  • -

  • error

  • warn

  • info

  • debug

日志等级。

Enable web console

  • true

  • false

是否开启 WebConsole。

  • true:表示开启。

  • false:表示关闭,不会重启 redis。

文件查看用户名

-

登录 Console 界面管理员账户。

文件查看密码

-

登录 Console 界面管理员账户密码。