将 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 内存存储的主要内容,如果未能解决你的问题,请参考以下文章