MySQL HeatWave의 멋진 점 중 하나는 기존 트랜잭션 데이터에 대해 분석을 직접 실행할 수 있는 기능이므로 대규모 병렬 분석을 수행해야 할 때 해당 데이터를 별도의 시스템으로 셔플할 필요가 없습니다. 놀랍게도 쉽습니다.
MySQL HeatWave는 완전 관리형 서비스이며, 모든 데이터베이스와 마찬가지로 공용 인터넷에서 차폐된 상태로 유지하는 것이 가장 좋습니다. 데이터로 작업할 수 있도록 계속 연결해야 하므로 OCI Cloud Shell 사용(시작하기 가이드에서 간략하게 설명함), DIY Bastion 호스트 및 OCI Bastion 서비스를 사용하여 MySQL Workbench와 연결(Bastion에 대해 자세히 알아보기)을 보안 터널로 살펴봅시다.
MySQL HeatWave 시스템이 아직 작동 및 실행 중이 아닌 경우 OCI에서 MySQL HeatWave 시작하기로 이동하여 한 번 더 시작해 보세요. 모두 준비가 되었으면 여기에서 계속해서 다양한 연결 옵션, 데이터 로딩 기술 및 클러스터 관리 기능을 살펴보십시오.
명령행 인터페이스를 선호하는 사용자의 경우 Cloud Shell을 통해 또는 자체 관리되는 배스천 호스트를 통해 접속하도록 선택할 수 있습니다. 이 호스트에서는 선호하는 Linux 기능을 활용할 수 있습니다. GUI를 선호하는 사용자의 경우 Secure Tunnel 섹션으로 이동할 수 있습니다. 그러나 first...a 몇 가지 준비 단계!
더 진행하기 전에 DB 시스템에서 필요한 끝점 세부정보를 수집했는지 확인하십시오. 데이터베이스 -> DB 시스템을 탐색하여 얻을 수 있는 프라이빗 IP 주소 및 MySQL 포트가 필요합니다. 여기서 이전에 생성한 MySQL 데이터베이스의 이름을 누릅니다.
다음으로 다양한 중개 시스템(배스천 또는 보안 터널을 사용하도록 선택하든)에 대한 보안 연결을 위해 SSH 키가 필요합니다. OCI 콘솔에서 바로 사용할 수 있는 Cloud Shell을 사용하여 SSH 키를 생성합니다. 매우 편리합니다. (참고 - Cloud Shell에서 데이터베이스에 연결할 수도 있습니다. 곧 연결될 것입니다.)
Cloud Shell은 Bash 셸을 실행하는 작은 VM과 유사하며 기능이 로드됩니다. 실제로 MySQL 및 MySQL Shell은 다양한 OCI 도구와 함께 이미 설치되어 있습니다. 따라서 시작하는 데 1분 정도 걸리지만, 시작하면 브라우저의 CLI 권한 내에서 많은 작업을 수행할 수 있습니다.
셸이 작동 중이면 다음을 사용하여 SSH 키를 만듭니다.
ssh-keygen -b 2048 -t rsa
기본 파일 이름을 그대로 적용하고 암호 없이 계속 진행하기 위해 Enter 키를 계속 누르면 곧 공용(~/.ssh/id_rsa.pub) 및 전용(~/.ssh/id_rsa) SSH 키가 준비됩니다.
cd ~/.ssh 및 ls -al을 사용하여 내부 내용을 확인해 보겠습니다.
Cloud Shell에서 SSH 키를 처음 생성한 경우 두 개의 파일만 표시됩니다. 개인 키를 안전하게 유지하고 공유하지 마십시오. 퍼블릭 키는 특정 작업에 필요하며 일부 시스템에 업로드할 수 있을 뿐 아니라 클라우드에서 보안 통신을 용이하게 하기 위해 복사 및 붙여넣기할 수 있습니다.
Cloud Shell에서 나가기 전에 퍼블릭 키를 확보하려고 합니다. 메모장과 같은 텍스트 편집기를 열고 Cloud Shell에 있는 경우 id_rsa.pub 콘텐츠를 cat ~/.ssh/id_rsa.pub로 복사하고, 해당 텍스트 BLOB(키)을 선택하고, 선택한 텍스트 편집기에 붙여넣습니다. ssh-rsa로 시작해야 합니다. Cloud Shell 오른쪽 상단에 있는 스프로킷을 누르고 Download를 선택할 수도 있습니다. 공개 키의 경로를 입력하십시오.
공용 키는 다운로드한 파일에 대해 OS에서 지정한 폴더에 배치됩니다. .ssh/id_rsa(개인 키)에 대해서도 동일한 작업을 수행하고 안전한 위치에 저장합니다. Mac 또는 Linux에서는 개인 키 파일을 chmod 400으로 설정합니다.
이미 Cloud Shell에 있으므로 빠른 새로 고침을 통해 여기서 시작하겠습니다. 도구가 이미 설치되어 있으므로 MySQL 클라이언트 또는 셸로 연결할 수 있습니다. 이 예에서는 MySQL 셸을 사용합니다.
먼저 Cloud Shell의 네트워크 설정을 프라이빗으로 변경해야 합니다.
메시지가 표시되면 MySQL 인스턴스를 배치한 VCN 및 서브넷을 선택하고 [이 네트워크에 접속]합니다.
참고: 이 기능은 홈 영역에 있습니다. MySQL를 배포하지 않은 경우 프롬프트의 지침에 따라 원격 VCN 피어링을 설정할 수 있습니다.
데이터베이스에 로그인할 시간:
mysqlsh -uadmin -p -h 10.0.1.... --sql
프롬프트가 표시되면 DB 시스템을 만들 때 지정한 암호를 입력합니다.
데이터베이스를 생성할 때 샘플 데이터를 로드한 경우 빠른 질의를 실행하여 DB의 내용을 검증할 수 있습니다.
SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'airportdb';
컴퓨팅 시간! Compute > Instances로 이동합니다. 이전과 동일한 컴파트먼트에 머무르고 Create Instance를 누릅니다. 이름을 지정하고 선택한 가용성 도메인 및 구성을 유지합니다. 즐겨찾는 Linux flavor에 대한 이미지를 선택합니다. 이 예에서는 Oracle Linux 8을 사용하고 있습니다.
여기서 중요한 부분은 이전에 설정한 VCN을 사용하는 것입니다. 생성된 공용 서브넷을 선택하고 공용 IP 주소 할당이 예로 설정되어 있는지 확인합니다.
Add SSH keys 섹션에서 메모장에서 공용(public) 키를 붙여넣음
그런 다음 Create를 눌러 시작합니다! 물론 몇 분 정도 걸릴 것입니다.
녹색으로 바뀌고 실행 중이면 인스턴스 페이지에 인스턴스 액세스 시 공용 IP 주소와 전용 IP가 표시됩니다.
공용 IP를 복사하여 저장합니다.
이제 Bastion 호스트에서 MySQL DB 시스템에 연결합니다.
이제 컴퓨팅 인스턴스의 공용 IP, 전용 SSH 키 및 DB 시스템의 전용 IP를 사용할 수 있습니다. SSH를 통해 연결하기 위해 처음 두 개를 함께 배치합니다. 개인 키가 있는 위치를 가리키며 사용자 이름은 opc가 됩니다.
예(Mac OS 또는 Linux 터미널, Windows의 경우 PowerShell):
ssh -i ~/.ssh/id_rsa opc@
MySQL 셸을 사용하여 설치하겠습니다(모든 프롬프트에 대해 y만 응답).
sudo yum install mysql-shell -y
엔드포인트는 이전에 메모장에 복사한 전용 IP가 됩니다. 물론 이전에 실행한 데이터베이스의 암호도 필요합니다.
예:
mysqlsh -uadmin -p -h 10.0.1.... --sql
프롬프트가 표시되면 DB 시스템을 만들 때 지정한 암호를 입력합니다.
데이터베이스를 생성할 때 샘플 데이터를 로드한 경우 빠른 질의를 실행하여 DB의 내용을 검증할 수 있습니다.
SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'airportdb';
OCI Bastion 서비스를 사용하면 가상 클라우드 네트워크 내의 전용 리소스에 대한 안전한 임시 연결을 쉽게 생성할 수 있습니다. MySQL은 완전 관리형 DB 시스템이므로 OS에 접속할 수 없습니다. 대신 배스천 서비스를 통해 보안 터널을 생성하고 MySQL Workbench를 활용하여 접속합니다.
시작하려면 OCI 콘솔에서 Security -> Bastion으로 이동합니다. 배스천 인스턴스 생성 - 특정 세션 구성을 위한 컨테이너입니다.
그런 다음 세션을 생성합니다. 유형은 SSH 포트 전달 세션입니다. DB 포트(기본값: 3306)와 함께 MySQL 인스턴스의 개인 IP 주소를 입력해야 합니다. 이 연습에서는 이전에 생성한 SSH 키 쌍을 사용할 수 있습니다. 실제 환경에서는 다른 키 쌍을 생성해야 합니다.
[세션 생성]을 클릭합니다.
세션이 성공적으로 생성되면 오른쪽의 3점 메뉴를 눌러 SSH 명령을 볼 수 있습니다. 명령을 텍스트 편집기에 복사하고
Mac 또는 Linux의 경우 터미널 창을 열고 명령을 실행할 수 있습니다. Windows에서는 PowerShell를 사용합니다. 연결을 계속하라는 메시지가 나타나면 'yes'를 입력하고 Enter 키를 누릅니다.
그런 다음 데이터베이스 클라이언트(예: MySQL Workbench)를 열고 연결을 구성합니다.
[연결 테스트]를 클릭합니다. 모두 정상이면 다음이 표시됩니다.
설정을 저장하고 연결을 엽니다. 이제 기존 데이터를 둘러보거나 새 데이터를 로드할 수 있습니다.
이 시점에서 InnoDB에서 HeatWave로 데이터를 로드할 준비가 되었으므로 실제로 노치를 밟을 수 있습니다.
데이터 로드를 시작할 수 있도록 MySQL 셸로 다시 이동해 보겠습니다.
명령줄에서 다음을 수행합니다.
mysqlsh -uadmin -p -h 10.0.1... --sql
데이터베이스 비밀번호를 입력하십시오.
자동 병렬 로드 명령을 사용하여 airportdb 테이블을 HeatWave로 로드합니다.
CALL sys.heatwave_load(JSON_ARRAY('airportdb'), NULL);
확인하기 위해 테이블이 HeatWave 클러스터에 로드되었는지 확인합니다. 로드된 테이블은 AVAIL_RPDGSTABSTATE 로드 상태입니다.
다시 MySQL 셸에서 다음을 수행합니다.
USE performance_schema;
기본 스키마가 performance_schema로 설정되었음을 알 수 있습니다.
SELECT NAME, LOAD_STATUS FROM rpd_tables,rpd_table_id WHERE rpd_tables.ID = rpd_table_id.ID;
물론 여기에서 질의를 실행하고 필요한 모든 데이터베이스 기능을 수행할 수 있습니다. HeatWave를 설정 및 해제하여 질의 시간을 비교하고 HeatWave를 설정하여 실행 속도를 확인할 수도 있습니다.
HeatWave가 켜져 있는지 확인하려면 다음 명령을 사용합니다.
SHOW VARIABLES LIKE 'use_secondary_engine%';
끄려면 다음을 사용합니다.
SET SESSION use_secondary_engine=OFF;
그리고 다시 켜려면 다음을 사용하십시오.
SET SESSION use_secondary_engine=ON;
HeatWave 클러스터에서 테이블을 언로드해야 하는 경우 다음과 같이 테이블을 변경하면 됩니다.
ALTER TABLE flightschedule SECONDARY_UNLOAD;
HeatWave 클러스터를 만든 후에도 노드 수를 조정할 수 있습니다. DB 시스템의 HeatWave 메뉴 항목을 사용하여 클러스터를 편집하면 됩니다. 클러스터의 크기는 온라인이고, 작업 중 다운타임이 없으며, 크기 조정 후 데이터가 자동으로 리밸런싱됩니다.
분석할 데이터 양에 필요한 노드 수를 추정하는 옵션도 있습니다. 예측값을 생성하는 데 몇 분 정도 걸릴 수 있지만 추측에 따라 클러스터 크기를 조정할 수 있습니다. 예측기가 구성에 대한 변경을 제안하는 경우 해당 구성을 바로 적용할 수 있습니다.
언제든지 HeatWave 클러스터를 정지하도록 선택하거나(청구도 정지됨) 클러스터를 새로 고치기 위해 재시작할 수 있습니다. HeatWave 클러스터가 중지 또는 다시 시작 작업을 통해 중지되면 HeatWave 클러스터 메모리에 로드된 데이터가 손실됩니다. 클러스터를 시작하거나 다시 시작하면 이전에 로드된 모든 데이터가 자동으로 다시 로드됩니다. HeatWave가 정지된 동안 DB 내에서 발생한 데이터 변경사항은 재로드된 데이터에 포함됩니다.
HeatWave 클러스터를 삭제하면 HeatWave 클러스터 노드가 영구적으로 제거됩니다. HeatWave 클러스터가 연결된 DB 시스템은 영향을 받지 않습니다. 삭제 후에는 클러스터를 처음부터 다시 설정해야 합니다. 즉, 데이터를 HeatWave로 다시 로드해야 합니다.
이를 통해 OCI 기반 MySQL HeatWave의 연결 전략 및 관리 기능에 대한 간단한 검토를 완료할 수 있습니다. 다양한 채널을 통해 DB 시스템을 연결하는 방법, HeatWave에서 데이터를 로드/언로드하는 방법, 보조 엔진을 켜고 끄는 방법을 배웠습니다. 여기에서 일부 쿼리를 실행하거나 자체 데이터를 로드하여 HeatWave가 얼마나 빨리 진행될 수 있는지 확인할 수 있습니다!
MySQL HeatWave에 대한 자세한 내용은 문서를 참조하십시오.
더 자세한 내용이 궁금하다면? 토론에 참여하려면 공용 Slack 채널이 필요합니다!