5

2つのデータベースを持つ1つのRedisインスタンスがあります。次に、2番目のインスタンスを設定して最初のインスタンスを複製しますが、2番目のインスタンスにはデータベースが1つだけあり、最初のインスタンスからdb0のみを複製する必要があります。これを実行しようとすると(slaveof ...2番目のインスタンスに設定)、Redisログファイルに次のエラーメッセージが表示されます。

FATAL: Data file was created with a Redis server configured to handle more than 1 databases. Exiting

redis-dumpを使用しようとしましたが、生成されたダンプを新しいインスタンスにインポートしようとするとエラーが発生します。(2dbsと1dbsとは関係ありませんが、redis-dumpのバグであり、まだアルファ版です。

何をすべきか?

4

2 に答える 2

5

これが私がそれを達成した方法です(Gurpartap Singhの助けを借りて):

  • databases 2最初のインスタンスと同じように2番目のRedisインスタンスを構成します
  • 最初のインスタンスを複製します(http://redis.io/topics/replicationを参照)
  • 2番目のRedisインスタンスへのコマンドラインを開きます(redis-cliを使用)
  • Redis CLIの場合:SELECT 1(2番目のデータベースを選択)
  • Redis CLIの場合:FLUSHDB(2番目のデータベースのすべてのキーを削除します)
  • Redis CLIの場合:SAVE(データセットをディスクに保存します)
  • Redis CLIを終了し、Redisを停止します
  • 構成をに変更しますdatabases 1
  • Redisを再起動します

この時点で、dbが1つだけのRedisインスタンスが実行されているはずです(元のRedisインスタンスのdb 0)

ここで重要なのは、2番目のデータベースのすべてのキーを削除してからデータセットをディスクに保存すると、結果のダンプには1つのデータベースしか含まれないということです。(Gurpartap Singhへのヒントをありがとう)

于 2012-08-18T13:25:18.600 に答える
1

私が理解していることから、db 0 と db 1 を持つ redis インスタンス A があります。db 0 を別のインスタンス B にレプリケートしたいと考えています (おそらく別のマシン上にありますが、問題ではありません)。Redis は主に、個別のデータベースではなく、完全なインスタンスのレプリケーションに重点を置いています。

したがって、db 1 ではなく db 0 を複製したい場合は、いずれかの db を別のインスタンスに移行することをお勧めします。同様に、このレプリケーション図とは関係なく、db 1 を別のインスタンスに移行します。次に、db 0 (インスタンス A) しかないインスタンスのマスター スレーブ レプリケーションをセットアップできます。

redis レプリケーションの実装方法に関する詳細な説明は次のとおりです: http://redis.io/topics/replication

簡単に言えば、スレーブにする新​​しいインスタンス (B) に接続し、コマンドを発行する必要がslaveof redis-master.webapp.com 6379あります:マスター インスタンス。

データを同期していないことがわかった場合は、コマンドを使用して同期状態を調べることができますinfo。マスターでも試してみてください。ログも役立ちます。

それが役立つことを願っています。redis レプリケーションの設定に関する詳細情報が必要な場合はお知らせください。

于 2012-08-12T02:41:32.680 に答える