199

現在、クラウド インスタンスで実行中のライブ redis サーバーがあり、この redis サーバーを新しいクラウド インスタンスに移行し、そのインスタンスを新しい redis サーバーとして使用したいと考えています。MySQL の場合は、DB を古いサーバーからエクスポートして、新しいサーバーにインポートします。redisでこれを行うにはどうすればよいですか?

PS: レプリケーションをセットアップするつもりはありません。Redis サーバーを新しいインスタンスに完全に移行したいと考えています。

4

12 に答える 12

290

まず、サーバー A でダンプを作成します。

A$ redis-cli
127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/var/lib/redis/"
127.0.0.1:6379> SAVE
OK

これによりdump.rdb、完全に最新であることを確認し、保存場所 (/var/lib/redis/dump.rdbこの場合) を示します。dump.rdbまた、定期的に自動的にディスクに書き込まれます。

次に、サーバー B にコピーします。

A$ scp /var/lib/redis/dump.rdb myuser@B:/tmp/dump.rdb

B で Redis サーバーを停止し、dump.rdb をコピーして (パーミッションが以前と同じであることを確認してください)、開始します。

B$ sudo service redis-server stop
B$ sudo cp /tmp/dump.rdb /var/lib/redis/dump.rdb
B$ sudo chown redis: /var/lib/redis/dump.rdb
B$ sudo service redis-server start

B の Redis のバージョンは、A のバージョン以上である必要があります。そうしないと、互換性の問題が発生する可能性があります。

于 2014-02-25T19:31:05.750 に答える
112

BGSAVE実行するかSAVEコマンドラインから、データベースのスナップショットを dump.rdb に保存します。これにより、redis サーバーと同じフォルダーに dump.rdb という名前のファイルが作成されます。すべてのサーバーコマンドのリストを参照してください。

この dump.rdb を、移行先の他の Redis サーバーにコピーします。redis が起動すると、このファイルを探してデータベースを初期化します。

于 2011-05-14T22:40:14.443 に答える
34

サーバー間の接続がある場合は、新しいインスタンスをスレーブ ノードとしてレプリケーションをセットアップすることをお勧めします (これは SQL とは異なり、単純です)。その後、単一のコマンドで新しいノードをマスターに切り替え、次のコマンドで移動できます。ダウンタイムゼロ。

于 2011-05-15T01:34:07.717 に答える
5

ゼロ ダウンタイム移行の重要な要素は次のとおりです。

  • レプリケーション ( http://redis.io/commands/SLAVEOF )
  • アプリケーションの切り替え中にスレーブに書き込む可能性 ( CONFIG SET slave-read-only no)

要するに:

  1. ターゲット redis (空) をソース redis (データ付き) のスレーブとしてセットアップする
  2. レプリケーションの終了を待つ
  3. ターゲット redis (現在はスレーブ) への書き込みを許可します
  4. アプリをターゲット redis に切り替える
  5. マスターからスレーブへのデータストリームの終了を待つ
  6. ターゲットの redis をマスターからスレーブに変える

さらに、redis には、ターゲットをデタッチした直後にソース redis が書き込みを受け入れるのを無効にするオプションがあります。

  • min-slaves-to-write
  • min-slaves-max-lag

このトピックは

RedisLabs チームからの非常に良い説明https://redislabs.com/blog/real-time-synchronization-tool-for-redis-migration (web.archive.org を使用)

また、移行用の対話型ツールも: https://github.com/RedisLabs/redis-migrate

于 2016-09-08T20:50:52.187 に答える
4

redis データをインポートするときに dump.rdb を配置する必要がある場所を確認するには、

クライアントを起動

$redis-cli

それから

redis 127.0.0.1:6379> CONFIG GET *
 1) "dir"
 2) "/Users/Admin"

ここで /Users/Admin は、サーバーから読み取られる dump.rdb の場所であるため、これは置き換える必要があるファイルです。

于 2014-12-31T07:29:18.817 に答える
1

rddも使用できます

実行中のredisサーバーをダンプして復元し、ダンプキーのフィルター/一致/名前変更を許可できます

于 2012-09-19T18:56:17.453 に答える
0

コマンド ライン インターフェイス ユーティリティを npm と github に公開しました。これにより、特定のパターン (* も含む) に一致するキーを、ある Redis データベースから別の Redis データベースにコピーできます。

ユーティリティは次の場所にあります。

https://www.npmjs.com/package/redis-utils-cli

于 2016-02-24T23:45:36.127 に答える