【问题标题】:Redis sync fails. Redis copy keys and values worksRedis 同步失败。 Redis 复制键和值有效
【发布时间】:2014-05-16 02:26:47
【问题描述】:

我有两个 redis 实例都在 win64 的同一台机器上运行。该版本是来自https://github.com/MSOpenTech/redis 的版本,没有任何修改,并且二进制文件按照从 github 下载的方式运行(即版本 2.6.12)。

我想创建一个从站并将其同步到主站。我在同一台机器上执行此操作,以确保它在位于 WAN 的机器上创建从属设备之前工作,这将需要大约一个小时来传输主服务器中存在的数据。

但是,我收到以下错误:

[4100] 15 May 18:54:04.620 * Connecting to MASTER...
[4100] 15 May 18:54:04.620 * MASTER <-> SLAVE sync started
[4100] 15 May 18:54:04.620 * Non blocking connect for SYNC fired the event.
[4100] 15 May 18:54:04.620 * Master replied to PING, replication can continue...

[4100] 15 May 18:54:28.364 * MASTER <-> SLAVE sync: receiving 2147483647 bytes from master
[4100] 15 May 18:55:05.772 * MASTER <-> SLAVE sync: Loading DB in memory
[4100] 15 May 18:55:14.508 # Short read or OOM loading DB. Unrecoverable error, aborting now.

我可以同步的唯一方法是通过一个类似于以下内容的迷你脚本:

import orm.model

if __name__ == "__main__":
    src = orm.model.caching.Redis(**{"host":"source_host","port":6379})
    dest = orm.model.caching.Redis(**{"host":"source_host","port":7777})
    ks = src.handle.keys()
    for i,k in enumerate(ks):
        if i % 1000 == 0:
            print i, "%2.1f %%" % ( (i * 100.0) / len(ks))
        dest.handle.set(k,src.handle.get(k))

其中 orm.model.caching.* 是我的中间件缓存实现位(对于 redis 来说,它只是创建一个 self.handle 实例变量)。

首先,我非常怀疑接收字节中的数字,因为它是 2^32-1 .. 一个非常奇怪的巧合。其次,OOM 可能意味着内存不足,但我可以启动第二个进程并通过脚本同步该进程,但通过 redis --slaveof 执行此操作失败,似乎内存不足。这肯定不对吧?

redis-check-dump 不运行,因为这是 windows 实现。

很遗憾,我正在同步的密钥中有敏感数据,因此我无法将其提供给任何人进行调查。对此感到抱歉。

我肯定在运行 64 位版本,因为它在启动时在标题中说明了这一点。

我不介意通过我的迷你脚本同步然后只启用从模式,但我认为这是不可能的,因为在执行 slaveof 的那一刻,它会删除所有已知数据并从头开始重新同步(然后失败) .

有什么想法吗??

【问题讨论】:

    标签: caching redis


    【解决方案1】:

    我之前也看到过这个错误,但是 2.8.4 的最新位似乎已经解决了它https://github.com/MSOpenTech/redis/tree/2.8.4_msopen

    【讨论】:

    • 谢谢。我没有考虑查看 2.8.4_msopen 分支,因为我认为它可能不稳定......但无论如何都会尝试。
    • 不幸的是没有骰子 :-( .... 它表现得更好,但我仍然得到同样有趣的字节数被复制然后完全崩溃。
    • 嗯,主从实例的最大内存设置是多少?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 2016-12-01
    • 2022-08-08
    相关资源
    最近更新 更多