migrate
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 >> |
---|