首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拆分Redis RDB文件

拆分Redis RDB文件
EN

Stack Overflow用户
提问于 2013-11-27 10:01:44
回答 2查看 683关注 0票数 1

目前,我在一台EC2机器上使用redis,内存为60G,没有任何从处理器,但是随着数据的增长,我需要更多的内存。

我正在考虑迁移到2x60G机器,并将已经存在的数据分割到这两台机器之间。

是否有分割RDB文件的工具?我还没找到专门为这个设计的东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-27 12:39:54

如果您想要拆分数据,则需要有一种方法将您的密钥分割成碎片,以便从服务器A写入/读取一些密钥,从服务器B中写入/读取其他密钥

没有办法分割一个RDB文件,但是您可以做一些事情来实现您想要的结果。

首先,您可以在第二台服务器上启动redis实例,并说它是当前服务器的从属服务器,但将param从读设置为false。这将导致从主同步并读取所有的redis数据。到目前为止,您只拥有一个包含所有数据的奴隶,但是现在我们将做一个有趣的部分。

然后,你需要决定一个切分策略。一些红人客户为你做这件事。例如,官方Ruby客户端知道如何在配置它时处理它。您需要配置您的客户端,以便将密钥分给A和B(或者替代使用双代理,这样客户端就不会知道不同的服务器,而双代理将负责处理它)

一旦客户端进行了配置,就需要将新的客户端部署到生产中,并立即将该从属服务器配置为不再是从服务器。您可以直接使用从服务器上的CONFIG命令(不要忘记使用config重写保存配置),也可以更改从服务器的配置文件并重新启动,任何对您更方便的都可以。由于从服务器被配置为仅从读的false,所以即使在从模式下,它也会接受写入。这意味着,如果您直接从redis-cli更改配置,您可以从从属服务器更改为只需要重新启动的单独的切分红色,我认为这非常酷。

注意,一旦你分解,你将不得不小心使用多个命令或当使用LUA脚本。如果您使用的是双代理,您将无法使用这些命令,但是如果您在客户端进行切分,则仍然可以使用MULTI。只是要小心使用切分机制,在这种机制中,所有相关的键都将留在同一台服务器上。

票数 1
EN

Stack Overflow用户

发布于 2022-01-24 09:50:59

step1:安装https://github.com/leonchen83/redis-rdb-cli/

step2:创建一个配置文件来设置拆分条件

nodes.conf含量

代码语言:javascript
复制
34b6e1dfb871ad30398ef5edd6b9a954617e6ec1 127.0.0.1:10003@20003 master - 0 1531044047088 3 connected 8193-16383
89d020a7e727e81f003836207902ae26fe05fd51 127.0.0.1:10001@20001 myself,master - 0 1531044047000 1 connected 0-8192
vars currentEpoch 6 lastVoteEpoch 0

step3:运行rdt -s your-dump.rdb -c nodes.conf -o /path/to

在step3之后。将在/path/to目录34b6e1dfb871ad30398ef5edd6b9a954617e6ec1.rdb89d020a7e727e81f003836207902ae26fe05fd51.rdb中生成2个rdb文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20239256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档