目前,我在一台EC2机器上使用redis,内存为60G,没有任何从处理器,但是随着数据的增长,我需要更多的内存。
我正在考虑迁移到2x60G机器,并将已经存在的数据分割到这两台机器之间。
是否有分割RDB文件的工具?我还没找到专门为这个设计的东西。
发布于 2013-11-27 12:39:54
如果您想要拆分数据,则需要有一种方法将您的密钥分割成碎片,以便从服务器A写入/读取一些密钥,从服务器B中写入/读取其他密钥
没有办法分割一个RDB文件,但是您可以做一些事情来实现您想要的结果。
首先,您可以在第二台服务器上启动redis实例,并说它是当前服务器的从属服务器,但将param从读设置为false。这将导致从主同步并读取所有的redis数据。到目前为止,您只拥有一个包含所有数据的奴隶,但是现在我们将做一个有趣的部分。
然后,你需要决定一个切分策略。一些红人客户为你做这件事。例如,官方Ruby客户端知道如何在配置它时处理它。您需要配置您的客户端,以便将密钥分给A和B(或者替代使用双代理,这样客户端就不会知道不同的服务器,而双代理将负责处理它)
一旦客户端进行了配置,就需要将新的客户端部署到生产中,并立即将该从属服务器配置为不再是从服务器。您可以直接使用从服务器上的CONFIG命令(不要忘记使用config重写保存配置),也可以更改从服务器的配置文件并重新启动,任何对您更方便的都可以。由于从服务器被配置为仅从读的false,所以即使在从模式下,它也会接受写入。这意味着,如果您直接从redis-cli更改配置,您可以从从属服务器更改为只需要重新启动的单独的切分红色,我认为这非常酷。
注意,一旦你分解,你将不得不小心使用多个命令或当使用LUA脚本。如果您使用的是双代理,您将无法使用这些命令,但是如果您在客户端进行切分,则仍然可以使用MULTI。只是要小心使用切分机制,在这种机制中,所有相关的键都将留在同一台服务器上。
发布于 2022-01-24 09:50:59
step1:安装https://github.com/leonchen83/redis-rdb-cli/
step2:创建一个配置文件来设置拆分条件
nodes.conf含量
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 0step3:运行rdt -s your-dump.rdb -c nodes.conf -o /path/to
在step3之后。将在/path/to目录34b6e1dfb871ad30398ef5edd6b9a954617e6ec1.rdb和89d020a7e727e81f003836207902ae26fe05fd51.rdb中生成2个rdb文件。
https://stackoverflow.com/questions/20239256
复制相似问题