IBM Cloud Docs
Databases for Redis로 마이그레이션

Databases for Redis로 마이그레이션

데이터 마이그레이션이 필요한 경우

다음 주요 버전의 Databases for Redis 업그레이드할 때 영구 데이터를 반드시 유지해야 하는 경우 모든 데이터를 성공적으로 마이그레이션하는 단계를 수행하세요. 모든 키-값 쌍을 새 배치에 복사하십시오. 사용자 사례에 적합한 방법을 사용하여 이전 인스턴스에서 새 배치로 이 작업을 수행하십시오.

{{{site.data.keyword.databases-for-redis}} 이 프로세스를 간소화하는 데 도움이 되는 지원되지 않는 예제 스크립트를 제공합니다.

마이그레이션 스크립트

경고! 이 스크립트는 지원되지 않으며 버전 업그레이드의 일부로 Databases for Redis 데이터를 하나의 인스턴스에서 다른 인스턴스로 이동하기 위해 빌드할 수 있는 항목의 예제로 존재합니다. 이 문서에 첨부된 모든 소스 코드 및 바이너리를 여기서는 "프로그램"이라고 합니다. IBM은 프로그램을 위해 어떠한 종류의 프로그램 서비스도 제공하지 않습니다. IBM은 어떠한 종류의 보증 없이 "현상태대로" 프로그램을 제공합니다. IBM 또는 IBM 리셀러가 손해의 발생 가능성을 통지받은 경우에도 IBM은 실제 손해, 직접 손해, 특별 손해, 부수 손해, 간접 손해 또는 경제적인 결과적 손해(기대했던 이익 또는 비용 절감 포함)에 대해 일체의 책임을 지지 않습니다.

이전 Databases for Redis 배포의 데이터를 새 버전으로 복사하려면 GitHub 제공되는 간단한 Python 스크립트를 실행해야 합니다. 스크립트는 소스 데이터베이스의 모든 키를 새 Databases for Redis 배치에 복사합니다. 스크립트를 다운로드하고 Python 3.x가 설치되어 있는지 확인하십시오. macOS, 사용하는 경우, 최신 버전을 제공하는 ' homebrew ' 명령을 실행하여 ' brew install python3' 명령을 실행하여 설치합니다.

그런 다음 마이그레이션 창을 만들어 사용자에게 유지 관리 중임을 알립니다. 이렇게 하면 모든 데이터를 새 Databases for Redis 배포로 마이그레이션할 시간을 확보할 수 있습니다. Redis 키에 만료 시간이 있는 키-값 저장소로 사용하는 경우 이러한 만료 시간이 새 데이터베이스에 복사됩니다. 예제에서는 데이터베이스에 1천만 개의 키가 여기에 해당되며 대역폭에 따라 마이그레이션하는 데 많은 시간이 걸리지 않습니다.

대상 및 소스 데이터베이스 인증 정보 가져오기

UI에서 대상 및 소스 데이터베이스 신임 정보 가져오기

이제 이전 소스 데이터베이스와 새 Databases for Redis 배포의 자격 증명을 모두 준비합니다. 자원 페이지에서 데이터베이스를 선택하여 두 Databases for Redis 배치 모두에 대한 신임 정보를 가져오십시오. 그런 다음 서비스 신임 정보 링크를 클릭하십시오. 거기에서 새 자격 증명을 클릭하여 대상 데이터베이스에 대한 새 자격 증명을 만듭니다. 소스에 대해 작성하는 신임 정보를 사용하십시오.

CLI에서 대상 및 소스 데이터베이스 신임 정보 가져오기

Cloud Databases CLI 플러그인을 사용하여 대상 및 소스 데이터베이스 신임 정보를 가져오십시오.

다음과 같은 명령을 실행하십시오.

ibmcloud cdb deployment-connections <INSTANCE_NAME_OR_CRN>

호스트 이름 및 포트가 포함되어 있는 Databases for Redis 연결 URI를 제공합니다. 데이터베이스에 대한 디코딩된 CA 인증서를 가져오려면 다음을 실행하십시오.

ibmcloud cdb deployment-cacert <INSTANCE_NAME_OR_CRN>

CA 인증서가 디코딩된 후에는 나중에 데이터베이스에 연결할 수 있도록 파일에 저장합니다. 배포를 위한 비밀번호를 모르는 경우 생성된 서비스 자격 증명에서 비밀번호를 얻거나 실행하여 새 비밀번호를 만드세요:

ibmcloud cdb deployment-user-password <INSTANCE_NAME_OR_CRN> admin <NEW PASSWORD>

이 정보를 사용하면, 대상 및 소스 데이터베이스에 대해 필요한 정보를 보유하게 됩니다.

스크립트 실행 및 데이터 마이그레이션

두 데이터베이스(소스 및 새 Databases for Redis 대상)에 대한 모든 자격 증명을 가지고 있으므로 ' pymigration.py 스크립트를 실행할 준비가 된 것입니다. 이전 단계의 신임 정보를 사용하여 터미널에서 코드를 실행하십시오.

python pymigration.py <SOURCE HOST> <SOURCE PASSWORD> <SOURCE PORT>
<DESTINATION HOST> <DESTINATION_USERNAME:DESTINATION_PASSWORD> <DESTINATION PORT>
<DESTINATION CA CERTIFICATE PATH> --sslsrc --ssldst

최신 버전의 Redis 소스로 사용하는 경우 ' <SOURCE USER:SOURCE PASSWORD>' 을 사용합니다.

Databases for Redis 데이터베이스 외부의 소스에서 데이터를 복사하는 것이므로, Databases for Redis 데이터베이스 데이터베이스가 SSL/TLS를 사용하는 경우 ' --sslsrc ' 플래그를 추가하세요. 지원하지 않는 경우에는 플래그를 추가하지 마십시오.

이렇게 하면 Redis가 SSL/TLS 지원 데이터베이스에 연결됩니다. 또한 대상 데이터베이스가 새 Databases for Redis 배치 (SSL/TLS도 사용됨) 이므로 --ssldst 를 추가하십시오.

추가할 수 있는 보충 플래그는 --db--flush 입니다. --db 는 키가 복사되는 데이터베이스를 표시합니다. 이 데이터베이스는 새 배치에서 키가 복사되는 데이터베이스입니다.

' --flush ' 플래그는 소스 데이터베이스에서 키를 가져오기 전에 대상 데이터베이스를 플러시합니다. 새 배포에서 최신 상태를 유지하려면 ' --flush 모든 키를 삭제한 다음 소스 데이터베이스에서 새 키를 가져옵니다.

' OldDB '을 데이터 마이그레이션의 소스로, ' NewDB '를 마이그레이션된 데이터의 대상으로 사용하는 스크립트를 실행하면 다음과 같은 출력이 표시됩니다:

python pymigration.py OldDB.databases.appdomain.cloud OldDBpassword1 88888 NewDB.databases.appdomain.cloud NewDBpassword1 99999 ~/NewDBCA  --sslsrc --ssldst  10000000 keys: 100% |###################################################| Time: 0:00:00 Keys disappeared on source during scan: 0 Keys already existing on destination: 0

이 스크립트는 OldDB 에서 NewDB 로 천만 개의 키를 복사했습니다. OldDB 데이터베이스에서 삭제된 키는 없습니다. ' OldDB 배포에 새 키를 추가하고 데이터를 다시 마이그레이션하려고 하면 원래 1,000만 개의 키가 해당 데이터베이스에 이미 존재하므로 대상의 키 수가 10000000 로 변경되는 것을 확인할 수 있습니다.

10000000 keys: 100% |###################################################| Time: 0:00:00
Keys disappeared on source during scan: 0
Keys already existing on destination: 10000000

다음 단계

데이터를 마이그레이션한 후에는 애플리케이션의 데이터베이스 연결 문자열을 새 연결 문자열 및 자격 증명으로 교체하세요.