참고:

복제를 사용하여 MySQL용 Google Cloud Platform CloudSQL을 Oracle Cloud Infrastructure MySQL Heatwave로 마이그레이션

소개

이 사용지침서에서는 MySQL용 Google Cloud Platform CloudSQL을 OCI(Oracle Cloud Infrastructure) MySQL Heatwave 데이터베이스 서비스로 라이브 마이그레이션하는 방법에 대해 설명합니다. 이 문서의 도움으로 서로 다른 두 클라우드 제공자 간에 MySQL 복제를 사용하는 방법을 이해할 수 있으며, 이는 OCI Heatwave로의 성공적인 마이그레이션을 위한 문서 역할을 할 것입니다. 이 튜토리얼에서는 다음 제품을 사용합니다 :-

  1. MySQL에 대한 GCP CloudSQL
  2. MySQL OLTP(Online Transaction Processing)용 Heatwave
  3. OCI Object Storage
  4. 배스천으로 사용되는 OCI 컴퓨트
  5. MySQL 셸

목표

MySQL용 Google Cloud Platform CloudSQL을 MySQL Heatwave 데이터베이스 서비스에 연결한 다음 OCI DB 시스템에 대한 인바운드 복제를 시작합니다. Google Cloud Platform과 MySQL 간의 연결에 대한 개략적인 개요를 다루지만 Google Cloud Platform CloudSQL과 MySQL Heatwave 간의 자세한 네트워크 가능성은 공식 문서에서 참조할 수 있습니다.

구조

다음은 솔루션의 고급 아키텍처 예입니다.

이미지 기본

점선은 MySQL에 대한 GCP의 Cloud SQL에서 초기 데이터 세트에 대한 Object Storage로의 데이터 플로우를 나타냅니다. 객체 스토리지에서 데이터를 사용할 수 있게 되면 OCI MySQL Heatwave DB 시스템과 함께 제공되는 복제 채널을 추가로 사용할 것입니다.

필요 조건

이 자습서의 일부로 인바운드 복제를 사용합니다. 인바운드 복제의 도움으로 MySQL Heatwave Database Service에 구성된 복제 채널을 사용하고 한 위치에서 다른 위치로 트랜잭션을 전송할 수 있습니다. 오라클의 소스는 온프레미스, AWS(Amazon Web Services), Microsoft Azure, Google Cloud Platform 등 서로 다를 수 있습니다. 이 자습서에서는 MySQL용 Google Cloud Platform Cloud SQL에 중점을 두고 있으며 대상은 MySQL Heatwave 데이터베이스 서비스입니다.

MySQL 인바운드 복제에 대한 개요는 여기에서 확인할 수 있습니다. 이 자습서는 소스 구성, 복제 사용자 생성, 복제 채널 생성 및 제한 사항에 대한 자세한 설명을 제공하므로 편리하게 사용할 수 있습니다.

마이그레이션을 위한 전체 프로세스를 다음과 같은 상위 단계로 나누고 있습니다.

  1. MySQL용 기존 Google Cloud Platform의 Cloud SQL에 액세스
  2. MySQL용 Google Cloud Platform의 Cloud SQL 준비
  3. MySQL Shell을 사용하여 OCI의 Bastion
  4. MySQL 및 OCI Heatwave DB 시스템용 Google Cloud Platform Cloud SQL 간의 네트워킹 고려 사항
  5. OCI의 오브젝트 스토리지 버킷 구성
  6. OCI Object Storage로 데이터 익스포트
  7. OCI에 새 DB 시스템 생성
  8. OCI에서 복제 채널 생성

작업 1: MySQL에 대한 기존 Google Cloud Platform Cloud SQL 액세스

마이그레이션 목적으로 Google Cloud Platform의 Cloud SQL에서 호스팅되는 샘플 데이터베이스를 MySQL에 사용합니다. 기존 MySQL 인스턴스는 Google Cloud Platform에서 허용하는 공용 서브넷에서 호스트되므로 이를 소스 데이터베이스로 사용하고 있습니다. MySQL용 Google Cloud Platform CloudSQL이 MySQL 버전 8.0의 엔터프라이즈 에디션을 실행 중이라고 가정해 보겠습니다.

이미지 1

이미지 2

공용 IP를 알게 되면 IP 주소를 허용 목록에 추가하고 MySQL 클라이언트와 쉽게 연결할 수 있습니다. MySQL 셸 또는 gcloud 유틸리티를 사용하여 데이터베이스에 연결할 수도 있습니다. MySQL용 Google Cloud Platform Cloud SQL의 네트워킹 섹션에서 변경사항 저장을 눌러 공용 IP의 허용 목록을 수행할 수 있습니다.

이미지 3

: 여기에 추가된 다른 IP도 있으며 이후 절에서 이에 대해 설명합니다.

접속이 가능하면 MySQL 인스턴스에 대해 Google Cloud Platform CloudSQL의 기존 데이터베이스를 질의할 수 있습니다. 마이그레이션을 위해 샘플 데이터베이스 사킬라에만 초점을 맞출 것입니다.

이미지 4

작업 2: MySQL용 Google Cloud Platform Cloud SQL 준비

인바운드 복제를 사용하는 경우 소스 서버에서 두 단계를 수행해야 합니다. 복제에 사용할 사용자를 만들어야 하며, 소스 서버에서 GTID가 사용으로 설정되었는지 확인해야 합니다. GTID(Global Transaction Identifier)를 사용하면 원래 소스 서버에서 커밋될 때 모든 트랜잭션을 식별하고 추적할 수 있습니다. 그런 다음 동일한 트랜잭션이 대상 복제본에 적용됩니다.

  1. 다음 명령을 사용하여 복제 사용자를 만들고 역할을 지정합니다.

    mysql> create user repl@'%' IDENTIFIED BY 'yourreplpassword' REQUIRE SSL;
    mysql> grant replication slave on *.* to repl@'%';
    mysql> select user from mysql.user;;
    
  2. GTID가 사용으로 설정되었는지 확인하십시오. 기본적으로 GTID는 사용으로 설정되지만 그렇지 않은 경우 사용으로 설정할 수 있습니다.

    mysql>show global variables like 'gtid%';

    이미지 5

작업 3: MySQL Shell을 사용하여 OCI에 Bastion 배포

Oracle Cloud Infrastructure에서는 MySQL DB 시스템 엔드포인트에 인터넷에서 직접 접근할 수 없습니다. 보안 강화로 인해 구성된 VCN 아래의 전용 끝점을 사용하여 배치됩니다. 따라서 전용 끝점에 액세스하려면 컴퓨트 인스턴스, VPN, 배스천 또는 네트워크 로드 밸런서를 사용하여 OCI MySQL Heatwave 데이터베이스 서비스를 접속해야 합니다.

위에서 언급한 옵션을 선택할 수 있습니다. 이 경우 MySQL Heatwave 데이터베이스 서비스의 Bastion 역할을 할 컴퓨트 인스턴스를 사용합니다. 나머지 옵션을 사용하는 방법은 여기에서 확인할 수 있습니다.

컴퓨트 인스턴스를 사용하는 동안 전용 서브넷이 MySQL Heatwave 데이터베이스 서비스를 호스트할 VCN의 공용 서브넷에 컴퓨트를 배치해야 합니다. 컴퓨트 인스턴스를 구성하는 동안 MySQL 셸 또는 MySQL 클라이언트를 설치하고 MySQL용 Google Cloud Platform Cloud SQL에 연결하는 데만 사용되므로 컴퓨트의 리소스 구성에 대해 걱정할 필요가 없습니다.

컴퓨트 인스턴스 생성 방법은 여기에서 확인할 수 있습니다.

아래 이미지에서 볼 수 있듯이 MySQL Heatwave 데이터베이스 서비스가 호스트될 VCN의 공용 서브넷에 컴퓨트 인스턴스를 생성했습니다. 이 Bastion 서버는 OCI와 Google Cloud Platform 간에 중간 역할을 하며 이 플랫폼에서는 두 MySQL 인스턴스에 모두 액세스할 수 있습니다. MySQL 데이터베이스 인스턴스에 접속하기 위해 MySQL 셸 또는 MySQL 클라이언트를 사용할 수 있습니다.

이미지 6

다음 명령을 실행하여 Mysql 셸을 설치합니다.

`sudo yum install mysql-shell`

자세한 내용은 설명서를 참조하십시오.

작업 4: MySQL 및 OCI용 Cloud SQL 간 네트워킹 고려 사항 확인 MySQL Heatwave 데이터베이스 서비스

여기서 중요한 것은 소스 서버와 대상 서버 간에 통신이 성공적으로 설정되도록 하는 것입니다.

Google Cloud Platform 콘솔에서는 Bastion 인스턴스의 공용 IP도 허용 목록에 포함되도록 해야 합니다. MySQL 클라이언트와 데이터베이스를 연결하기 위해 위에서 수행한 것과 동일한 프로세스를 사용하여 이 작업을 수행할 수 있습니다.

OCI 콘솔에서는 MySQLVCN의 공용 서브넷에서 호스트되는 Bastion 컴퓨트 인스턴스와 동일한 VCN 내의 전용 서브넷에서 호스트되는 MySQL Heatwave 데이터베이스 서비스 간에 통신을 설정해야 합니다. 트래픽을 허용해야 하며 전용 서브넷에서 수신 규칙을 열고 연결을 허용할 수 있습니다.

작업 5: OCI에서 오브젝트 스토리지 버킷 구성

MySQL용 Google Cloud Platform CloudSQL에서 초기 데이터 덤프를 저장하기 위해 OCI에 오브젝트 스토리지를 구성해야 합니다. 이 작업은 일회성이며 이 데이터는 MySQL Heatwave 데이터베이스 서비스에 데이터베이스를 생성하는 데 사용됩니다.

OCI에서 버킷 생성에 대한 자세한 내용은 버킷 생성을 참조하십시오.

이미지 7

위 버킷이 생성되면 오브젝트 스토리지 버킷과 배스천 인스턴스 간 링크를 설정해야 합니다. 이를 위해 MySQL Shell에서 사용할 oci 구성 파일을 사용합니다.

참고: API 키를 생성하는 동안 OCI 콘솔에서 생성된 전용 키의 위치로 key_file 매개변수를 업데이트해야 합니다.

작업 6: OCI Object Storage로 데이터 익스포트

Bastion 서버의 MySQL Shell 유틸리티를 사용하여 MySQL용 Google Cloud Platform의 클라우드 SQL에서 데이터를 내보냅니다. MySQL 셸 유틸리티는 한 번에 전체 인스턴스를 익스포트하고 다양한 옵션을 제공하는 데 도움이 되는 매우 강력한 도구입니다.

이 연습에서는 Google Cloud Platform CloudSQL for Mysql 데이터베이스의 스키마를 OCI 객체 스토리지로 익스포트합니다.

먼저 배스천 컴퓨트에서 MySQL 인스턴스에 접속합니다.

이미지 12

util.dumpSchemas(["sakila"], "", { osBucketName: "MysqlBucket", osNamespace: "orasenatdpltintegration01", ocimds: true, ociParManifest: true, threads: 8, compatibility: ["force_innodb", "skip_invalid_accounts", "strip_definers", "strip_restricted_grants",  "strip_tablespaces"], dryRun: "true"})

나머지 옵션은 요구 사항에 따라 사용할 수 있으며 자세한 내용은 여기에서 확인할 수 있습니다.

이미지 13

Dry Run이 완료되면 출력을 검사하고 문제를 해결합니다. 호환성 문제가 없는 경우 아래와 같이 dryRun 없이 실행하십시오.

이미지 14

엑스포트 작업에 대한 세부 정보를 제공하고 기간을 제공합니다. 약 45,000개의 레코드가 있는 샘플 데이터베이스이므로 빠르게 완료됩니다.

프로세스가 성공하면 이제 오브젝트 스토리지의 일부인 버킷에 데이터가 표시됩니다.

이미지 15

작업 7: OCI에서 새 DB 시스템 생성

MySQL DB 시스템을 구성하는 방법에 대한 자세한 내용은 DB 시스템 생성을 참조하십시오.

우리가 염두에 두어야 할 유일한 점은 이미 오브젝트 스토리지에 데이터가 있기 때문에 DB 시스템을 구성하기 위해 사용해 보겠습니다. 나중에 데이터를 로드할 수도 있지만 이 옵션을 사용하면 시간이 많이 절약됩니다. 이 옵션을 사용하려면 PAR 요청을 생성해야 합니다.

이미지 16

이미지 17

아래와 같이 사용되므로 여기서 생성된 URL을 저장했는지 확인하십시오.

이미지 18

PAR URL을 지정하면 Sakila 데이터베이스로 MySQL DB 시스템이 자동으로 생성됩니다.

검증하려면 다음 명령을 실행합니다.

이미지 19

이를 통해 이제 대상 DB 시스템에 소스 데이터베이스가 있습니다. 이제 소스와 대상 간에 복제를 만듭니다.

작업 8: OCI에서 복제 채널 생성

복제 채널은 소스 데이터베이스 시스템을 대상 데이터베이스 시스템에 연결하는 데 사용됩니다. 이러한 채널을 사용하면 모든 트랜잭션이 복사됩니다. 이러한 채널은 소스 및 대상에 대한 몇 가지 세부 정보만 제공하면 되므로 매우 쉽습니다. 항상 암호화된 연결을 사용하는 것이 좋으며 사용자를 만들 때 이전 단계에서 SSL 키워드를 지정했습니다.

복제 소스가 다를 수 있으므로 여러 퍼블릭 클라우드 제공업체에 따라 달라지는 채널 필터도 허용됩니다. 자세한 내용은 여기에서 확인할 수 있습니다.

아래 이미지는 OCI에서 복제 채널을 생성할 때 제공되는 다양한 옵션을 보여줍니다. 포트 번호와 함께 소스 호스트 이름 또는 공용 IP 주소를 제공해야 합니다. 이전에 생성한 Repl 사용자를 사용하여 인증합니다.

이미지 20

이미지 21

또한 복제용으로 만든 대상 DB 시스템을 지정하고 복제 필터를 사용하면 드롭다운 메뉴에서 복제 필터를 선택할 수 있는 옵션이 제공됩니다.

내보내기 후 소스 시스템에 로드가 더 이상 없으면 복제 채널이 활성화되고 완료됩니다. 하지만 GTID 불일치로 인해 로드가 일치하지 않을 수 있으며 필요한 작업을 수행해야 합니다. 복제 채널의 여러 단계가 있으며 해당 세부 정보는 여기에서 언급됩니다.

인바운드 복제 구성 중 발생할 수 있는 가장 일반적인 오류 메시지에 대한 자세한 내용은 문제 해결 설명서를 참조하십시오.

다음 이미지와 같이 Google Cloud Platform 소스에 더미 데이터를 삽입합니다.

이미지 21

MySQL Heatwave 데이터베이스 서비스에서 샘플 데이터베이스를 질의합니다.

이미지 22

콘솔에서 소스와 대상 간에 지연이 발생하지 않고 트랜잭션이 복사 및 커밋되는 것을 확인할 수 있습니다. 따라서 재해 복구 및 마이그레이션 목적으로 복제 채널을 사용할 수 있습니다. 적절한 계획 및 애플리케이션 다운타임에 따라 컷오버 작업을 수행하고 OLTP 트랜잭션 및 분석 워크로드를 위한 원스톱 솔루션인 MySQL Heatwave 데이터베이스 서비스를 사용할 수 있습니다.

다음 단계

이 자습서에서는 OCI MySQL Heatwave Database Service가 인바운드 복제를 사용하기 매우 쉬운 메커니즘을 제공하는 것을 확인했습니다. 여러 소스를 지원하며 이러한 소스와 관련된 복제 채널 필터도 제공합니다. 인바운드 복제는 데이터세트를 Oracle Cloud로 가져와 히트웨이브 제공 서비스를 사용하는 데 사용할 수 있습니다. 뿐만 아니라 MySQL Heatwave Lakehouse도 여러 형식으로 테라바이트 단위의 엄청난 양의 데이터를 가져올 수 있는 곳에 도입되었습니다. MySQL Heatwave 데이터베이스 서비스와 In-Memory Query Accelerator를 제공하여 쿼리 성능을 극대화하는 방법에 대한 자세한 내용을 확인할 수 있습니다.

승인

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer를 방문하십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.