MIGRATE

Redis 開発者教育の申込 Redis 定期点検/技術サポート
Redis Technical Support
Redis エンタープライズサーバー
Redis Enterprise Server

Data を別の Redis Server へ移す

使い方は migrate host port key destination-db です。
key と data を指定した Redis Server(instance)へ move します。
指定した Server に該当 key がすでにあればエラーを出し、移しません。

Example

コマンド>set key value
結果>OK
コマンド>migrate 192.168.56.102 6379 key 0 1000
結果>OK
コマンド>exists key
結果>0
コマンド>set key XXXXX
結果>OK
コマンド>migrate 192.168.56.102 6379 key 0 1000
結果>(error) ERR Target instance replied with error: BUSYKEY Target key name already exists.
コマンド>get key   target Redis Server に接続して確認  
結果>value

アニメーションを見る

このコマンドは内部で dump, restore, del コマンドを実行します。
copy, replace オプションを使わなければ source server が 3.0 で target server が 2.8 でも構いません。
ただしこの2つのオプションを使うには source, target server ともに 3.0 以上である必要があります。
copy, replace オプションは 3.0 から使用できます。


Copy, replace オプションの使用

使い方は migrate host port key destination-db copy replace です。
copy は source server から消しません。
replace は target server に該当 key があれば上書きします。
copy と replace オプションを一緒に使っても構いません

Example

コマンド>migrate 192.168.56.102 6379 key 0 1000 copy
結果>OK
コマンド>exists key
結果>0
コマンド>set key YYYYY
結果>OK
コマンド>migrate 192.168.56.102 6379 key 0 1000 replace
結果>OK
コマンド>get key   target Redis Server に接続して確認  
結果>YYYYY

アニメーションを見る



Auth, Auth2 オプション

Auth は requirepass パラメータを指定した場合に使い(4.0.6から)、 Auth2 は ACL(version 6 から適用)を 利用する場合に使います。

  • キー1つの移動: MIGRATE host port key dbid timeout [COPY | REPLACE | AUTH password | AUTH2 username password]
  • 複数キーの移動: MIGRATE host port "" dbid timeout [COPY | REPLACE | AUTH password | AUTH2 username password] KEYS key1 key2 ... keyN

Multi key 移動

version 3.0.6 から multi key を移動できます。
migrate 192.168.56.102 6379 "" 0 1000 KEYS key1 key2 key3
指定したキーがすべてなければ 'NOKEY' を返し、 一部のキーがなくてもエラーを出さず 'OK' を返します。

Example

コマンド>migrate 192.168.56.102 6379 "" 0 1000 KEYS key1 key2 key3
結果>OK
Multi key 使用時、移動するキーに expire が設定されている場合 バグにより他のキーに expire が設定されることがあります。 このバグは 3.2.7 で修正されました。
詳しい内容はこちらを見てください。


クラスタ(cluster)でのキー移動

クラスタ環境でキー(データ)を別のマスターサーバーへ移すには、まずスロットの移動予告をしてから行う必要があります。   CLUSTER SETSLOT IMPORTING/MIGRATING コマンドを実行後 MIGRATE コマンドでデータを移動し、 CLUSTER SETSLOT NODE を使って完了する必要があります。
Redis-cli または redis-trib.rb で reshard によるキー移動時にこの migrate コマンドを使います。
CLUSTER SETSLOT コマンドはこちらを 実際の移動例はクラスタ設計を見てください。



構文

MIGRATE host port key|"" destination-db timeout [COPY] [REPLACE] [AUTH|AUTH2] [KEYS key [key ...]]

  • このコマンドは version 2.6.0 から使用できます。
  • 時間計算量: source server では内部で dump + del が実行され、target server では restore が実行されます。
  • copy, replace オプションは 3.0 から使用できます。
  • 3.0.6 から multi key オプションの KEYS を使用できます。
  • Auth: 4.0.6 から使用できます。
  • Auth2: 6.0 から使用できます。
  • 6.0 から Event Notification 発生 -> 'del' (COPY オプションを使わなかった場合)
関連コマンド DUMP, RESTORE
Clients for Java Jedis, Lettuce, Redisson
Clients for C Hiredis

<< RESTORE MIGRATE TOUCH >>

Email 返事がかかってなれば、メールでお知らせします。