将 Redis 集群缩减为单个 GCP 内存存储

Posted

技术标签:

【中文标题】将 Redis 集群缩减为单个 GCP 内存存储【英文标题】:Reduce Redis cluster to single GCP memorystore 【发布时间】:2022-01-16 17:46:51 【问题描述】:

我有 3 个带有 redis 的 redis 实例。一个是主人,另外两个是奴隶。我已经连接到主节点并通过 redis-cli 使用 INFO 命令获取信息。我可以看到参数 cluster_enabled:0 和

#复制

角色:主人 connected_slaves:2 slave0:ip=xxxxx,port=6379,state=online,offset=15924636776,lag=1 slave1:ip=xxxxx,port=6379,state=online,offset=15924636776,lag=0

还有keyspace,每个节点都有不同的dbs。我需要将所有数据迁移到 GCP 中的单个内存库,但我不知道如何。谁能帮帮我?

【问题讨论】:

您的 3 个 redis 实例目前托管在哪里? 在 GCP 中作为实例计算 您希望新的内存存储也成为 Redis 数据库吗? 是的,我想将三个实例迁移到一个内存存储区 你的两个 redis 从属实例上的数据库的大致大小是多少? 【参考方案1】:

由于两个节点都是从节点,并且没有开启集群,所以只需要复制主节点即可。 RIOT 是用于将数据迁移入和迁移出 Redis 的绝佳工具。

但是,如果您说 DB by node 是指您通过 select 访问的 redis DB 吗?在这种情况下,您需要为键添加前缀,因为 DB 的键集之间可能存在重叠。

【讨论】:

谢谢,我会检查 RIOT 工具。那么,这种架构意味着我在每个节点中都有相同的数据库吗?所以,如果我只迁移master节点到memorystore,我不会丢失数据,对吗?【参考方案2】:

我认为在单节点配置中设置另一个 Redis 集群是您最不必担心的。

对您来说真正的挑战是将所有记录迁移到新设置。这不是一个容易回答的问题,很大程度上取决于多种因素:

正在迁移的数据的总大小 这是生产中的实时数据库吗? 您希望将新配置中的两个数据库架构分开吗?

【讨论】:

我想创建一个内存库来替换 3 个实例【参考方案3】:

好的,我相信目前您的 Redis 实例托管在 Google Compute Engine 上。

您希望迁移到Memorystore for Redis。

如here 所述,您可以为此利用 Redis 快照。它为您提供了有关如何实现此目的的分步说明,将 GCS 存储桶用作临时存储。

使用 RDB(Redis 数据库备份)快照将数据导入 Cloud Memorystore 实例,以及从现有 Redis 实例备份数据。

【讨论】:

以上是关于将 Redis 集群缩减为单个 GCP 内存存储的主要内容,如果未能解决你的问题,请参考以下文章

Keycloak - Infinispan Redis 缓存存储

CSRedisCore集群搭建

本地开发redis集群环境很慢怎么办

redis的内存优化

redis 如何做内存优化?

将数据从 gs 存储桶移动到 s3 亚马逊存储桶的 GCP dataproc 集群 hadoop 作业失败 [控制台]