40

ダウンタイムなしで新しいバージョンの Redis にアップグレードするにはどうすればよいですか? Redis スレーブは読み取り専用であるため、マスターを停止する必要があり、DB がリロードされるのを待つ間、サイトは 45 秒以上読み取り専用になるようです。

これを回避する方法はありますか?

4

4 に答える 4

30

Redis チームには、これに関する非常に優れたドキュメントがあります。

主な手順:

  • 新しい Redis インスタンスを現在の Redis インスタンスのスレーブとしてセットアップします。そのためには、別のサーバー、または Redis の 2 つのインスタンスを同時に実行するのに十分な RAM を備えたサーバーが必要です。
  • 単一のサーバーを使用する場合は、スレーブがマスター インスタンスとは異なるポートで開始されていることを確認してください。そうしないと、スレーブがまったく開始できなくなります。
  • レプリケーションの初期同期が完了するまで待ちます (スレーブ ログ ファイルを確認します)。
  • INFO を使用して、マスターとスレーブに同じ数のキーがあることを確認してください。スレーブが希望どおりに動作しており、コマンドに応答していることを redis-cli で確認します。
  • 新しいインスタンス (つまり、スレーブ) を使用するために、すべてのクライアントを構成します。
  • マスターがクエリを受信して​​いないことを確認したら (MONITOR コマンドで確認できます)、SLAVEOF NO ONE コマンドを使用してスレーブをマスターに選択し、マスターをシャットダウンします。

完全なドキュメント:

ダウンタイムなしで Redis インスタンスをアップグレードまたは再起動する

于 2012-01-06T05:00:05.657 に答える
23

ノードをオフラインにするときは、SLAVEOF コマンドを使用してスレーブをマスターに昇格させます。その後、オンラインに戻すときにスレーブとして設定すると、オンライン ノードからすべてのデータがコピーされます。

クライアントが変更された/欠落したマスターノードを適切に処理できることを確認する必要がある場合もあります。

本当に凝りたい場合は、クライアントがマスターへの書き込みエラーを検出した場合にスレーブを昇格するようにクライアントを設定できます。

于 2011-01-18T08:10:39.897 に答える
10

これを行うために Redis Sentinel を使用できます。sentinel は自動的にスレーブを新しいマスターとして昇格させます。ここで詳細情報を見つけることができますhttp://redis.io/topics/sentinel

Sentinel は redis サーバーの管理に使用されるシステムであり、redis マスターとスレーブを継続的に監視し、マスターがダウンするたびに自動的にスレーブをマスターに昇格させます。古いマスターが起動すると、新しいマスターのスレーブになります。

ここでは、ダウンタイムは発生せず、構成ファイルの手動構成も必要ありません。上記のリンクにアクセスして、redis サーバー用にセンチネルを構成する方法を確認できます。

于 2014-04-18T05:26:54.440 に答える