4

これが簡単な質問であることを願っています:

あるマシン (M1) から別のマシン (M2) に redis データベースをコピーしようとしています。同じバージョンの redis を実行している両方のマシン。これが私がすることです:-

  1. M1 で、「保存」を発行します。私の知る限り、これにより、データセットの特定の時点のディスク ファイルが作成されます。私の設定ファイル (redis.conf) に基づいて、これは「dump.rdb」というファイルに書き込みます。

  2. M2 で redis をシャットダウンし、そのマシンの dump.rdb ファイルを削除します。次に、dump.rdb を M1-->M2 から (M2 の redis.conf で指定された予想される場所に) コピーし、M2 で redis インスタンスを再起動します。

M2 redis インスタンスでいくつかの「hgetall」クエリを発行すると、レコードがありません。M1 で同じことを繰り返すと、期待どおりの正しい結果が得られます。

私は何を間違っていますか?

4

4 に答える 4

3

あなたはより高いレベルで何も悪いことをしていません。おそらく、意図せずに間違いを犯している可能性があります...ファイルがコピーされた後、ファイルのMD5サムが同じであることを確認してください。2 番目の Redis が、永続化方法として AOF ではなく dump.rdb を使用するように構成されていることを確認してください。Redis ログを読んで、データベース ファイルを読み取るかどうかを確認します。同じデータベース番号も使用していますか?おそらく、データは DB5 に保存されていますが、DB0 を照会していますか?

于 2012-10-16T12:41:03.907 に答える
2

私はまったく同じ問題を抱えていました。最終的に、dump.rdb のコピー元の redis インスタンスは 2.4.x を実行していたが、コピー先の redis インスタンスは 2.2.x を実行していたことに気付きました。2.2.x インスタンスの起動時に、rdb ファイルを読み取れないという警告はありませんでした。しかし、、、DBSIZEなどINFOKEYS *すべて空のデータベースを示していました。

2 番目のインスタンスを 2.4.x にアップグレードすると、期待どおりにデータベースを開くことができました。お使いのマシンで同じバージョンが実行されていると既におっしゃっていましたが、バージョンが一致しない場合に同じ症状が発生することを他のユーザーに知らせるために、ここにこれを追加したいと思いました。

于 2013-01-31T23:49:33.017 に答える
1

redis のバックアップと復元にはredis-dumpを使用することをお勧めします

使用方法は次のとおりです。

    $ redis-dump 
    $ redis-dump -u 127.0.0.1:6371 > db_full.json
    $ redis-dump -u 127.0.0.1:6371 -d 15 > db_db15.json

    $ < db_full.json redis-load 
    $ < db_db15.json redis-load -d 15

redis-dump をインストールするには:

 $ gem install redis-dump
于 2012-10-16T07:01:22.977 に答える
0

redis 2.6 以降、 COPY オプションで実行できる MIGRATE ステートメントもあります。

移行する

データの一部だけをコピーしたい場合があるため、この機能について言及することにしました。

完全なデータベースのダンプとロードには使用しません。そのシナリオには、既に述べた方法の方が適しています。

于 2014-01-26T22:42:11.330 に答える