redis slave不会与master同步

tim*_*bat 20 replication redis

redis slave不会与master同步.

连接:

我发行时可以连接到主人

HOST_NAME=fakehost
redis-cli -h $HOST_NAME
Run Code Online (Sandbox Code Playgroud)

并使用类似命令检查主状态INFO,因此连接不是问题.

设置:

从奴隶盒子里,我发出了

SLAVEOF $HOST_NAME 6379
Run Code Online (Sandbox Code Playgroud)

并收到了OK.

当我INFO在奴隶上发出命令时,我明白了

# Replication
role:slave
master_host:<removed>
master_port:6379
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:0
master_link_down_since_seconds:1379450797
slave_priority:100
slave_read_only:1
connected_slaves:0
Run Code Online (Sandbox Code Playgroud)

在主箱上,我发出info并获得

# Replication
role:master
connected_slaves:0
Run Code Online (Sandbox Code Playgroud)

显然我没有联系.

日志

[11225] 17 Sep 14:31:33.225 * Connecting to MASTER...
[11225] 17 Sep 14:31:33.226 * MASTER <-> SLAVE sync started
[11225] 17 Sep 14:31:33.226 * Non blocking connect for SYNC fired the event.
[11225] 17 Sep 14:31:33.226 * Master replied to PING, replication can continue...
[11225] 17 Sep 14:31:33.227 # MASTER aborted replication with an error: ERR Unable to perform background save
Run Code Online (Sandbox Code Playgroud)

测试

测试dump.rdb是否在BGSAVE上创建

BGSAVE
> OK
Run Code Online (Sandbox Code Playgroud)

测试在SAVE上创建dump.rdb

SAVE
> OK
Run Code Online (Sandbox Code Playgroud)

提前致谢.

yan*_*han 10

我今天遇到了类似的情况.似乎对于使用的系统sysctl,您可能必须这样做:

sysctl vm.overcommit_memory=1
Run Code Online (Sandbox Code Playgroud)

并重新启动从属redis服务器.此链接可能有所帮助.


小智 9

这个问题有点棘手,

从站无法同步的原因在于主站本身,

注意日志输出: MASTER中止复制并出现错误:ERR无法执行后台保存

这意味着由于主机上的内存储备不足,主机无法进行后台保存,

解决这个问题我重新启动了主redis服务器,然后所有的slave都已经自己同步了.

  • 为我工作,我运行redis-cli shutdown save,在保存所有键的同时重启redis,并在几秒钟内同步奴隶. (2认同)

K0D*_*0D4 5

对我来说,这是因为我已经requirepass设置了,但是没有masterauth设置。