24

redis スレーブはマスターと同期しません。

接続性:

発行するとマスターに接続できます

HOST_NAME=fakehost
redis-cli -h $HOST_NAME

のようなコマンドを使用してマスターのステータスを確認するINFOため、接続は問題になりません。

設定:

奴隷箱から出した

SLAVEOF $HOST_NAME 6379

を受け取りました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

マスターボックスで、発行infoして取得します

# Replication
role:master
connected_slaves:0

だから明らかに私は接続されていません。

ログ

[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

テスト

BGSAVE に dump.rdb が作成されることをテストする

BGSAVE
> OK

SAVE で dump.rdb が作成されることをテストする

SAVE
> OK

前もって感謝します。

4

9 に答える 9

12

今日も同様の状況に遭遇しました。を使用するシステムではsysctl、次のことを行う必要があるようです。

sysctl vm.overcommit_memory=1

スレーブ redis サーバーを再起動します。このリンクが役立つ場合があります。

于 2014-01-30T06:55:40.267 に答える
10

この問題は少しトリッキーですが、

スレーブが同期できない理由はマスター自体にあります。

ログ出力に注意してください: MASTERがエラーで複製を中止しました: ERR Unable to perform background save

これは、マスター マシンのメモリ リザーブが少ないため、マスターがバックグラウンド保存を実行できないことを意味します。

この問題を解決するために、マスター redis サーバーを再起動すると、すべてのスレーブが自動的に同期されました。

于 2014-05-26T06:57:20.067 に答える
4

同じ問題に遭遇しました。私の理由は、両方のサーバーが同じ を使用していないためredis versionです。両方のサーバーでバージョンを確認しましょう。

127.0.0.1:6379> info server
# Server
redis_version:3.2.8
于 2017-02-27T08:13:35.037 に答える