MIGRATE

Redis Developer Course Redis Technical Support 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 이어도 된다.
그러나 이 두 옵션을 사용하려면 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(버전6부터 적용)을 이용할 경우 사용합니다.

  • 키 하나 이동: 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 이동

버전 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 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 답글이 올라오면 이메일로 알려드리겠습니다.