Redis-Shake를 사용하여 Redis™ 데이터를 마이그레이션하는 방법

ScaleGrid for Redis™* 데이터를 한 서버에서 다른 서버로 마이그레이션하는 것은 우리 고객의 일반적인 요구 사항입니다. 우리가 자주 듣는 두 가지 주요 이유는 하드웨어 마이그레이션 또는 서버 간에 데이터를 분할해야 하기 때문입니다.

일반적으로 표준 Redis 도구를 사용하는 동안 가동 중지 시간을 최소화하면서 마이그레이션하려고 합니다. 이 블로그 게시물에서는 오픈 소스 도구Redis-Shake를 사용하는 프로세스를 안내합니다. Alibaba-Cloud 데이터베이스 부서의 NoSQL 팀에서 개발 및 유지 관리합니다Redis-Shake allows you to easily migrate Redis data between Redis clusters. 이 가이드는 Redis™* 배포용 ScaleGrid에 더 중점을 두고 있지만 약간 수정하면 다른 유형의 Redis 배포에도 사용할 수 있습니다.

더 이상 고민하지 않고 마이그레이션 가이드를 시작하겠습니다!

전제 조건



마이그레이션을 수행하려면 Linux 또는 Windows 시스템이 필요합니다. (필요한 경우 소스 또는 대상 머신이 될 수 있습니다.)

계속하기 전에 확인해야 할 중요한 사항은 Redis-Shake가 현재 SSL 지원 클러스터를 지원하지 않는다는 것입니다. 소스 및 대상 클러스터가 모두 SSL을 사용하지 않는지 확인하십시오.

방화벽 규칙



Linux/Windows 시스템이 소스 클러스터와 대상 클러스터 모두에 연결할 수 있도록 방화벽 규칙을 생성했는지 확인하십시오. ScaleGrid에서 설정하는 방법에 대한 자세한 내용은 이link를 참조하세요.

Redis-Shake 다운로드



link 에서 최신/안정 버전을 선택한 후 Linux/Windows 시스템에서 Redis-Shake를 다운로드하고 압축을 풉니다. 아래 명령을 사용하여 오늘(v2.1.1) 현재 최신 버전을 다운로드할 수도 있습니다.



wget https://github.com/alibaba/RedisShake/releases/download/release-v2.1.1-20210903/release-v2.1.1-20210903.tar.gz
tar -xvzf release-v2.1.1-20210903.tar.gz
cd release-v2.1.1-20210903/



다음으로 Redis-Shake의 두 가지 사용 사례를 보여드리겠습니다.
  • Migrating data from a Standalone and Master-Slave
  • Migrating data in Cluster Mode

  • 데이터 마이그레이션 - 독립 실행형 및 마스터-슬레이브

    In this section, we will show you how to migrate your data in these different setups:

    • Standalone to Standalone
    • Master-Slave to Master-Slave
    • Standalone to Master-Slave (and vice-versa)

    1. 정보 수집

    Note down the following info from the Overview tab in the cluster details page from both your source and target cluster:

    • Hostname: The Connection String is in the format [hostname:port]. It should look something like this: EX-redms-00-redis-master.example.domain.io
      • (In the case of a Master-Slave cluster, we’ll connect to the master).
    • Port: 6379
    • Password: You can find your password and reset it from the console under Credentials

    2. 구성 파일 편집

    Open your “redis-shake.conf” file in the main folder and edit the following variables:

    source.type = standalone
    source.address = <source_hostname>:6379
    source.password_raw = <source_password>

    target.type = standalone
    target.address = <target_hostname>:6379
    target.password_raw = <target_password>

    3. 데이터 동기화

    Run the following command to synchronize data between the source and target cluster:

    $ ./redis-shake -type sync -conf redis-shake.conf

    4. 로그 대기

    Wait until you see the following information in the logs:

    sync rdb done.

    This means that the full synchronization has been completed and incremental synchronization begins.

    5. 증분 동기화 중지

    If +writeBytes=0 is seen for a long time, then that means no new data is incremented. You can stop the incremental synchronization by pressing Ctrl+C. It should look like something like this:

    sync: +forwardCommands=0 +filterCommands=0 +writeBytes=0

    6. 키 수 일치

    Now follow this link redis-cli를 사용하여 두 클러스터에 연결한 다음 두 클러스터에서 info keyspace 명령을 사용하여 클러스터 간의 키 수를 일치시키는 데 도움이 되는 도움말 문서를 참조하십시오.

    그리고 그게 다야! 이제 Redis-Shake를 사용하여 한 클러스터에서 다른 클러스터로 데이터를 성공적으로 마이그레이션했습니다. 클러스터 모드의 클러스터가 있는 경우 이 가이드의 다음 섹션에서 해당 유형의 클러스터를 실행하는 경우 수행해야 할 작업을 확인하는 것이 좋습니다.

    데이터 마이그레이션 - 클러스터 모드

    In this section, we will show you how to migrate data from one Redis deployment in cluster mode to another cluster.

    1. 정보 수집

    Note down the following info from the Overview tab in the cluster details page from both your source and target cluster:

    • Hostname: The Connection String is in the format [hostname1:port], [hostname2:port], [hostname3:port]. It should look something like this: EX-redms-03-redis-master.example.domain.io, EX-redms-06-redis-master.example.domain.io, EX-redms-09-redis-master.example.domain.io
    • Port: 6379
    • Password: You can find your password and reset it from the console under Credentials

    2. 구성 파일 편집

    Open your “redis-shake.conf” file in the main folder and edit the following variables:

    source.type = cluster
    source.address = <source_hostname1>:6379;<source_hostname2>:6379;<source_hostname3>:6379
    source.password_raw = <source_password>

    target.type = standalone
    target.address = <target_hostname1>:6379;<target_hostname2>:6379;<target_hostname3>:6379
    target.password_raw = <target_password>

    3. 데이터 동기화

    Run the following command to synchronize data between the source and target cluster:

    $ ./redis-shake -type sync -conf redis-shake.conf

    4. 로그 대기

    Wait until you see the following information in the logs:

    sync rdb done.

    This means that the full synchronization has been completed and incremental synchronization begins.

    5. 증분 동기화 중지

    If +writeBytes=0 is seen for a long time, then that means no new data is incremented. You can stop the incremental synchronization by pressing Ctrl+C. It should look like something like this:

    sync: +forwardCommands=0 +filterCommands=0 +writeBytes=0

    6. 키 수 일치

    Now follow this link redis-cli를 사용하여 두 클러스터에 연결한 다음 두 클러스터에서 info keyspace 명령을 사용하여 클러스터 간의 키 수를 일치시키는 데 도움이 되는 도움말 문서를 참조하십시오.

    그리고 그게 다야! 이제 Redis-Shake를 사용하여 클러스터 모드의 한 클러스터에서 다른 클러스터로 데이터를 성공적으로 마이그레이션했습니다. Redis-Shake 및 해당 기능에 대한 자세한 내용은 해당GitHub page을 방문하여 자세히 알아보고 최신 버전을 다운로드하십시오.

    *Redis는 Redis Labs Ltd.의 상표입니다. 이에 대한 모든 권리는 Redis Labs Ltd.에 있습니다. ScaleGrid의 모든 사용은 참조 목적으로만 사용되며 Redis와 ScaleGrid 간의 후원, 보증 또는 제휴를 나타내지 않습니다.

    좋은 웹페이지 즐겨찾기