OCI 기반 MySQL HeatWave 시작하기

MySQL HeatWave는 MySQL에서 혼합 트랜잭션 및 분석 워크로드를 실행 중이거나 분석을 위해 데이터를 별도의 데이터베이스로 이동하는 경우 완벽합니다. 데이터를 이동하기 위해 복잡한 ETL 파이프라인을 제작하는 대신 고성능 인메모리 쿼리 가속기인 HeatWave는 현재 애플리케이션을 변경하지 않고도 분석 및 혼합 워크로드를 위해 MySQL 성능을 수십 배나 가속화합니다. 이 서비스는 MySQL Enterprise Edition을 기반으로 구축되어 개발자가 세계에서 가장 인기 있는 오픈 소스 데이터베이스를 사용하여 보안 클라우드 네이티브 애플리케이션을 신속하게 생성하고 배포할 수 있습니다.

Oracle은 개발자가 애플리케이션에 집중할 수 있도록 MySQL HeatWave를 설계했습니다. OLTP 및 OLAP에 대해 두 개의 데이터베이스를 관리할 필요가 없으며, ETL 복제의 복잡성, 대기 시간 및 비용 없이 실시간 보안 분석을 수행할 수 있습니다. MySQL HeatWave는 백업, 복구, 데이터베이스 및 운영 체제 패치와 같은 작업을 자동화하는 완전 관리형 서비스입니다. "걱정하지 마세요, 더 크런치! " MySQL HeatWave는 Oracle의 MySQL 개발 팀에서 개발 및 지원합니다.

OCI를 시작하기 위해 VCN을 생성하고, MySQL DB 시스템을 배치하고, HeatWave 클러스터를 생성하고, 일부 데이터를 가져와서 분석합니다. AWS에서 MySQL HeatWave 시작하기를 찾고 있습니다. 다중 클라우드 시나리오에서 MySQL HeatWave를 활용하는 방법을 보여줍니다. 살아있어야 할 시간!

이제 막 시작 단계부터 시작하여 적절한 액세스로 VCN을 생성한 다음 OCI에서 HeatWave 클러스터를 생성하는 방법을 살펴보겠습니다.

사전 요구사항

  • OCI 계정 및 Oracle Cloud 계정 이름
  • 관리자 액세스
  • 호환 가능한 브라우저(Chrome 69+, Safari 12.1+, Firefox 62+ 또는 Oracle Jet-approved 브라우저)

개요

  1. VCN 생성 및 데이터베이스 액세스 구성
  2. 사용자 및 그룹 생성(아직 생성하지 않은 경우)
  3. HeatWave 호환 구성으로 DB 시스템 생성
  4. Cloud Shell에 접속하고 MySQL Shell을 사용합니다.
  5. 샘플 데이터 임포트
  6. HeatWave 클러스터 추가
  7. 쿼리 실행!

이 예에서는 간소화된 접근 방식을 사용하여 HeatWave를 사용하도록 설정합니다.

이제 기본 사항을 시작해 봅시다!

VCN 생성 및 데이터베이스 액세스 구성

메뉴: 홈 > 네트워킹 > 가상 클라우드 네트워크

가상 클라우드 네트워크 > VCN 마법사 시작 > 인터넷 접속을 통한 VCN 생성을 사용하여 VCN 및 서브넷을 생성합니다. 물론 개인 서브넷도 얻을 수 있습니다.

VCN 마법사 스크린샷

편리한 마법사는 시스템에 대한 네트워크 환경을 만드는 과정을 안내합니다. 이 작업을 구성하는 방법은 여러 가지가 있지만 산만하지는 않습니다. 이전에 설정한 구획인 my_heatwave_testing를 선택했는데, 그게 중요하기 때문입니다!

VCN 구성 스크린샷

이제 MySQL Database Service 포트를 통한 트래픽을 허용하도록 VCN의 보안 목록을 구성해 보겠습니다. 생성한 VCN의 전용(private) 서브넷을 누르고 해당 VCN의 보안 목록을 누릅니다.

보안 목록의 스크린샷

[보안 추가] 리스트를 클릭합니다.

올바른 포트 3306 및 33060을 활성화하는 데 필요한 몇 가지 수신 규칙을 추가합니다. 자세한 내용은 다음과 같습니다.



Source CIDR: 0.0.0.0/0
Destination Port Range: 3306,33060
Description: MySQL Port

Add Ingress Rules를 누릅니다.

수신 규칙 스크린샷

관련 리뷰: Look good so far!

사용자 및 그룹 생성(아직 생성하지 않은 경우)

이미 관리자인 경우 다음 단계로 건너뛸 수 있지만, DB 시스템을 관리하기 위해 액세스 권한이 필요할 수 있는 OCI 테넌시에 사용자를 추가하는 경우 여기에 있습니다. "스트림라인" 예제에서도 권한을 설정하고 액세스를 다소 제한해야 하지만 여기에서 그룹 관리에 대한 모든 내용을 읽을 수 있습니다. 일반적으로 그룹을 생성하고 정책을 생성한 다음 그룹에 사용자를 추가합니다.

ID 및 보안 옵션으로 친구를 사귀자.

사용자에 대한 그룹을 생성합니다. 내 예에서 MySQL 관리자라는 그룹을 생성했습니다.

그룹에 유저를 추가합니다. 이 예제에서는 이 그룹에 자신을 추가합니다.

물론 그룹에 대해 먼저 필요한 모든 사용자를 생성하고, 결정한 레벨에서 액세스 권한이 필요한 그룹에 사용자를 추가하고, 적절한 액세스 제어를 통해 느슨하게 설정할 수 있습니다.

정책을 설정하여 액세스를 허용하고, 한 그룹이 전체 액세스(관리자)를 허용하고, 제한된 액세스(예: 데이터베이스 사용자)를 가진 그룹을 허용합니다.

샘플 정책:



Allow group MySQLAdmins to {SUBNET_READ, SUBNET_ATTACH, SUBNET_DETACH, VCN_READ, COMPARTMENT_INSPECT} in tenancy
Allow group MySQLAdmins to manage mysql-family in tenancy
Allow group MySQLAdmins to use tag-namespaces in tenancy

이를 통해 구획을 구성 및 관리하고 데이터베이스 인스턴스에 적용되는 액세스 범위를 정의할 수 있습니다.

OCI에서 사용자 추가 및 정책 설정에 대한 자세한 내용은 이 설명서를 참조하십시오.

HeatWave 호환 구성으로 DB 시스템 생성

Menu > Databases > DB Systems

DB 시스템 생성

사용자, VCN 등을 아직 설정하지 않은 경우 경고가 표시됩니다. 좋습니다. 왼쪽의 목록 범위 아래에서 이 항목을 생성할 컴파트먼트를 다시 확인하는 것을 잊지 마십시오. Create DB System을 누릅니다.

DB 시스템 정보 스크린샷

컴파트먼트를 다시 확인하고 이름을 지정하고 HeatWave(물론)을 선택합니다.

관리자 인증서 생성 스크린샷

관리자 자격 증명을 만들고, 편리하지만 안전한 곳에 저장해야합니다.

Configure Networking(네트워킹 구성)에서는 앞에서 생성한 가상 클라우드 네트워크를 사용하지만 전용 서브넷을 사용합니다. 기본 가용성 도메인을 그대로 두고 Configure Hardware로 이동합니다.

배치 구성 스크린샷

Configure Hardware 섹션에서 선택된 구성이 MySQL인지 확인합니다. HeatWave.VM.Standard입니다.

참조:

  • CPU 코어 수: 16
  • 메모리 크기: 512GB
  • 데이터 저장 크기: 1024
하드웨어 구성 스크린샷

Configure Backup 섹션에서 기본 백업 윈도우를 7일 동안 그대로 유지할 수 있습니다.

백업 계획 구성 스크린샷

계속 스크롤하고 Show Advanced Options를 누릅니다.

Networking(네트워킹) 탭으로 이동하고 Hostname(호스트 이름) 필드에 DB 시스템의 정확한 이름을 입력합니다. 그러면 클러스터가 DNS에 등록되고 FQDN(정규화된 도메인 이름)을 통해 호스트에 액세스할 수 있습니다.

네트워킹 구성 스크린샷

포트 구성이 다음에 해당하는지 확인합니다.

  • MySQL 포트: 3306
  • MySQL X 프로토콜 포트: 33060

이 예에서는 PAR(Pre-Authenticated Request)을 통해 제공되는 Object Storage 버킷에 저장된 데이터를 사용하여 리소스를 만드는 동안 자동으로 데이터를 가져옵니다.

데이터 임포트 스크린샷

MySQL 셸을 사용하여 데이터를 로드하려는 경우 이 단계를 건너뛸 수 있습니다.

[데이터 임포트] 탭을 선택합니다. 여기에 PAR에 대한 URL을 붙여넣으라는 메시지가 표시됩니다. 객체 PAR URL은 MySQL 셸 덤프 utilityHere의 ociParaMifest 옵션을 사용하여 생성할 수 있는 매니페스트 파일이어야 합니다. 오브젝트 스토리지 버킷 PAR 또는 접두사 PAR이 있는 오브젝트를 사용할 수도 있습니다.

시험용으로 Airport-DB를 가져오는 데 사용할 수 있는 샘플 링크는 다음과 같습니다.



https://objectstorage.us-ashburn-1.oraclecloud.com/p/zRBSs7nKURyZRcIoV4QlYhascC5gkZcJeQoBS8c2ssyEPID3PSDAnh73OMClQQH4/n/idazzjlcjqzj/b/airportdb-bucket-10282022/o/airportdb/@.manifest.json

모든 집합... Create!를 누릅니다.

이번에는 노란색 육각형이 나타나면 결국 녹색으로 바뀌고 DB 시스템이 작동되어 실행됩니다. 약간의 차를 만들거나 물 한 잔을 잡아, 당신은 많은 일을했습니다.

MySQL 셸 연결 및 사용

편리한 Cloud Shell을 사용하여 MySQL 및 MySQL 셸에 연결해 보겠습니다. OCI 대시보드에 내장된 작은 Linux 터미널입니다(부적절합니다). 오른쪽 상단에 있는 Cloud Shell 프롬프트 아이콘을 누르면 브라우저 하단에 명령행이 열립니다. 이전에 생성된 VCN을 선택하여 클라우드 셸에 대한 프라이빗 네트워크 설정을 구성해야 합니다.

mysql 셸 스크린샷
MySQL Shell 프라이빗 네트워크 설정 스크린샷

멋진 점은 MySQL Shell이 이미 설치되어 있다는 것입니다!

HeatWave 호환 DB 시스템을 생성하면 MySQL 셸을 사용하여 접속합니다.

mysqlsh --host  -u  -p

MySQL 셸에 대해 자세히 알아볼 수 있습니다.

데이터베이스 시스템 연결에 대한 자세한 내용

데이터 임포트

PAR 옵션을 사용하여 리소스를 생성하는 동안 데이터를 임포트하도록 선택한 경우 이 단계를 건너뛸 수 있습니다. 그 외에 AirportDB(PDF)를 계속 가져올 수 있습니다.

Cloud Shell 내:



wget https://downloads.mysql.com/docs/airport-db.tar.gz
tar xvzf airport-db.tar.gz

그러면 데이터 파일이 포함된 airport-db라는 단일 디렉토리가 생성됩니다.

MySQL 셸을 시작하고 MySQL DB 시스템 끝점에 접속합니다.

mysqlsh _Username@DBSystem_IP_Address_or_host_Name

프롬프트가 나타나면 앞에서 지정한 admin 암호를 입력합니다. 연결되면 Dump Loading Utility를 사용하여 데이터를 가져옵니다.

MySQL>JS> util.loadDump("airport-db", {threads: 16, deferTableIndexes: "all", ignoreVersion: true})

임포트하는 데 몇 분 정도 걸립니다. 계속 진행할 준비가 되었습니다!

HeatWave 클러스터 추가

HeatWave는 빅 데이터 세트를 위해 설계되었으며 빠른 분석이 필요하므로 단순한 샘플 데이터베이스를 가져오더라도 원하는 만큼 로드할 수 있습니다(스토리지를 할당한 경우). 또한 별도의 데이터베이스로 오프로드하지 않고도 클러스터에서 query를 실행할 수 있습니다. 클러스터가 생성되려면 몇 분 정도 걸릴 수 있습니다.

시작하려면 OCI 콘솔의 DB 시스템: 데이터베이스 > DB 시스템 >으로 이동하여 최근 생성한 DB 시스템을 누르십시오.

Resources(리소스)에서 HeatWave(다른 유용한 항목 중 하나)가 표시되면 이 항목을 누릅니다.

리소스 탭 스크린샷

물론 HeatWave 클러스터를 추가(오른쪽의 버튼, 페이지 중간의 버튼 사용)하거나 위쪽의 More actions(추가 작업) 메뉴를 누르고 Add Heatwave cluster(히트웨이브 클러스터 추가)를 선택합니다. 기본값(512GB RAM 및 노드 1개로 CPU 코어 16개)을 적용한 다음 버튼을 눌러 HeatWave 클러스터를 추가합니다.

클러스터 추가 스크린샷
Heatwave 클러스터 구성 스크린샷

이 작업은 몇 분 정도 걸리므로 클러스터가 회전하는 동안 음료를 다시 가열할 수 있습니다.

HeatWave로 데이터 로드 및 쿼리 실행

마지막으로, 재미있는 부분! HeatWave 클러스터가 실행되면 다음을 수행합니다.

  1. MySQL 셸을 시작하고 MySQL DB 시스템의 끝점에 접속합니다.
    $> mysqlsh Username@DBSystem_IP_Address_or_Host_Name
  2. MySQL 셸 실행 모드를 SQL로 변경합니다.
    MySQL>JS> \sql
  3. airportdb 데이터베이스로 변경합니다.
    
    
    MySQL>SQL> USE airportdb;  
    Default schema set to `airportdb`.Fetching table and column names from `airportdb` for auto-completion... Press ^C to stop.`
  4. MySQL InnoDB에서 HeatWave로 데이터 로드
    MySQL>SQL> call sys.heatwave_load(JSON_ARRAY(“airportdb”), NULL);
  5. EXPLAIN을 사용하여 질의를 HeatWave 클러스터로 오프로드할 수 있는지 확인합니다.
    mysql query 1 스크린샷
    주: query를 오프로드할 수 있는 경우 EXPLAIN 출력의 Extra 열은 "Using secondary engine RAPID"를 보고합니다.
  6. query가 오프로드될 수 있는지 확인한 후에 query를 실행하고 실행 시간을 기록합니다.
    mysql query 2 스크린샷

이제 "일반 바닐라" MySQL DB 시스템을 사용하는 데 걸리는 시간을 살펴보겠습니다. 이렇게 하려면 use_secondary_engine 변수를 사용 안함으로 설정합니다.

mysql query 3 스크린샷

요약

지금까지 OCI에서 수행한 작업은 MySQL 사용 포트가 포함된 가상 클라우드 네트워크를 설정하고, MySQL 데이터베이스를 설정하고, HeatWave 클러스터를 추가합니다. 그런 다음 일부 테스트 데이터를 임포트하고 몇 개의 질의를 실행하여 HeatWave과 DB 시스템 자체의 속도를 비교했습니다.

더 자세한 내용이 궁금하다면? 토론에 참여하려면 공용 Slack 채널이 필요합니다!