Data Catalog 크롤러를 이용한 MySQL 메타데이터 추출
카카오클라우드 Data Catalog의 크롤러를 이용하면 카카오클라우드 MySQL의 메타데이터를 추출하고 자동으로 업데이트할 수 있습니다. 이 문서에서는 Data Catalog 크롤러를 활용하여 두 개의 MySQL 데이터베이스의 메타데이터를 추출하는 과정을 설명합니다.
- 예상 소요 시간: 20분
- 사용자 환경
- 권장 운영 체제: MacOS, Ubuntu
- Region: kr-central-2
- 사전 준비 사항
시나리오 소개
이번 시나리오에서는 카카오클라우드 Data Catalog의 크롤러를 활용하여 두 개의 MySQL 데이터베이스의 메타데이터를 추출하여 Data Catalog 데이터베이스에서 관리하는 방법을 단계별로 설명합니다. MySQL-1 데이터베이스에 kakao_shop, MySQL-2 데이터베이스에 kakao_library 테이블을 생성한 후, Data Catalog 크롤러를 이용하여 메타데이터를 추출할 예정입니다. 주요 단계는 다음과 같습니다.
- VPC 및 네트워크 설정: VPC 및 서브넷 생성
- 관리형 MySQL 데이터베이스 생성: 두 개의 카카오클라우드 MySQL 데이터베이스 생성
- MySQL Client 인스턴스 생성: MySQL Client 인스턴스 생성 후 MySQL Client를 이용해 테이블 생성
- Data Catalog 크롤러 생성 및 실행: 크롤러를 이용해 MySQL 데이터를 스캔하여 메타데이터 추출
시작하기 전에
사전 작업 단계에서는 튜토리얼 진행을 위한 환경 구축을 진행합니다.
아래 정보를 확인하여 VPC, 서브넷, 보안 그룹, MySQL Client 인스턴스, MySQL을 생성하겠습니다.
1. VPC 및 서브넷 생성
VPC 및 서브넷을 생성합니다.
-
카카오클라우드 콘솔 > Beyond Networking Service > VPC 메뉴로 이동합니다.
-
우측의 [+ VPC 생성] 버튼을 클릭한 후, 다음과 같이 VPC 및 서브넷을 생성합니다.
구분 항목 설정/입력값 VPC 정보 VPC 이름 tutorial-vpc VPC IP CIDR 블록 10.0.0.0/16 가용 영역 가용 영역 개수 1 첫 번째 가용 영역 kr-central-2-a 서브넷 설정 가용 영역당 퍼블릭 서브넷 개수 1 가용 영역당 프라이빗 서브넷 개수 1 kr-central-2-a - 퍼블릭 서브넷 IPv4 CIDR 블록: 10.0.0.0/20
- 프라이빗 서브넷 IPv4 CIDR 블록: 10.0.16.0/20
- 퍼블릭 서브넷 IPv4 CIDR 블록: 10.0.0.0/20
-
하단에 생성되는 토폴로지를 확인 후, 이상이 없다면 [생성] 버튼을 클릭합니다.
- 서브넷의 상태는
Pending Create
>Pending Update
>Active
순서로 변경됩니다.Active
상태가 되어야 다음 단계를 진행할 수 있습니다. - 생성까지 5 ~ 10분 정도 시간이 소요될 수 있습니다.
- 서브넷의 상태는
2. 보안 그룹 설정
VPC에서 VM을 실행 시 해당 VM에 대한 보안을 강화하기 위해, 다음과 같이 보안 그룹을 생성하고 인바운드 규칙을 추가합니다.
-
카카오클라우드 콘솔 > Beyond Networking Service > VPC > 보안 그룹으로 이동합니다.
-
우측의 [보안 그룹 생성] 버튼을 클릭한 후, 다음과 같이 보안 그룹을 생성합니다.
-
보안 그룹 이름과 설명을 아래와 같이 입력합니다.
보안 그룹 이름 보안 그룹 설명(선택) tutorial-mysql-client-sg MySQL Client 인스턴스의 보안정책 -
하단의 [+ 추가] 버튼을 클릭 후, 인바운드 규칙 조건을 아래와 같이 설정하고 [적용] 버튼을 클릭합니다.
나의 퍼블릭 IP 확인하기다음 버튼을 클릭하면 현재 사용 중인 나의 퍼블릭 IP를 확인할 수 있습니다.
프로토콜 출발지 포트 번호 정책 설명 TCP
{사용자 퍼블릭 IP}/32
22 mysql-client inbound policy
-
3. MySQL Client 인스턴스 생성 및 설정
MySQL Client 인스턴스에 MySQL Client를 설치하면 카카오클라우드 MySQL 리소스에 접근할 수 있습니다.
-
카카오클라우드 콘솔 > Beyond Compute Service > Virtual Machine 메뉴로 이동합니다.
-
인스턴스 메뉴에서 [인스턴스 생성] 버튼을 클릭한 후, 다음과 같이 VM 인스턴스를 생성합니다.
구분 항목 설정/입력값 비고 기본 정보 이름 tutorial-mysql-client 개수 1 이미지 Ubuntu 20.04 - 5.4.0-173 ⚠️ NVIDIA 이미지가 아닌 일반 이미지 선택 인스턴스 유형 m2a.large 볼륨 루트 볼륨 10 키 페어 {USER_KEYPAIR}
⚠️ 키 페어는 최초 1회 안전하게 보관해야 합니다.
잃어버린 키는 복구할 수 없으며, 재발급이 필요합니다.네트워크 VPC tutorial-vpc 서브넷 main (10.0.0.0/20) 보안 그룹 tutorial-mysql-client-sg
-
Virtual Machine > 인스턴스 메뉴에서 위에서 생성했던
tutorial-mysql-client
인스턴스를 선택 후, 우측의 인스턴스 작업에서 [퍼블릭 IP 연결] 버튼을 클릭합니다.-
연결된 퍼블릭 IP는 Beyond Networking Service > VPC > 퍼블릭 IP 메뉴에서 확인할 수 있습니다.
-
4. 관리형 MySQL 생성
카카오클라우드의 MySQL은 완전 관리형 데이터베이스 서비스로 VPC 환경에서 제공됩니다. Data Catalog 크롤러로 메타데이터를 추출하기 위해서 두 개의 카카오클라우드 MySQL을 생성합니다.
-
카카오클라우드 콘솔 > Data Store > MySQL 메뉴로 이동합니다.
-
Instance Group 메뉴에서 [인스턴스 그룹 만들기] 버튼을 클릭 후, 두 개의 인스턴스 그룹을 생성합니다.
tutorial-mysql-1
구분 항목 설정/입력값 기본 설정 인스턴스 그룹 이름 tutorial-mysql-1 MySQL 설정 엔진 버전 지정된 값을 사용 MySQL 사용자 이름 {USER_NAME}
MySQL 비밀번호 {USER_PASSWORD}
인스턴스 가용성/개수 단일 (Primary 인스턴스) 인스턴스 유형 m2a.large 스토리지 유형/크기 100 로그 스토리지 유형/크기 100 네트워크 설정 VPC tutorial-vpc 서브넷 tutorial-vpc_{VPC_ID}_sn_1 (10.0.16.0/20)
자동 백업 자동 백업 옵션 미사용 tutorial-mysql-2
구분 항목 설정/입력값 기본 설정 인스턴스 그룹 이름 tutorial-mysql-2 MySQL 설정 엔진 버전 지정된 값을 사용 MySQL 사용자 이름 {USER_NAME}
MySQL 비밀번호 {USER_PASSWORD}
인스턴스 가용성/개수 단일 (Primary 인스턴스) 인스턴스 유형 m2a.large 스토리지 유형/크기 100 로그 스토리지 유형/크기 100 네트워크 설정 VPC tutorial-vpc 서브넷 tutorial-vpc_{VPC_ID}_sn_1 (10.0.16.0/20)
자동 백업 자동 백업 옵션 미사용
5. MySQL 데이터베이스 및 테이블 생성
MySQL Client 인스턴스에 SSH로 접속한 후, MySQL Client로 데이터베이스 접속하여 테이블을 생성합니다.
-
로컬 환경에서 터미널 실행 후, 키페어 파일을 다운로드 받은 폴더로 이동합니다.
- 프라이빗 키 파일을 최초 생성해서 사용했다면, 기본적으로 다운로드 폴더에 저장됩니다. (cd ~/Downloads)
-
다음 명령어를 실행하여 MySQL Client 인스턴스에 SSH로 접속합니다.
chmod 400 ${PRIVATE_KEY}.pem # 읽기 권한 부여
ssh -i ${PRIVATE_KEY}.pem ubuntu@${MYSQL_CLIENT_PUBLIC_IP}환경변수 설명 PRIVATE_KEY🖌︎ 키 파일 이름 MYSQL_CLIENT_PUBLIC_IP🖌︎ Virtual Machine > 인스턴스 탭에서 tutorial-mysql-client 퍼블릭 IP 확인 -
MySQL Client를 설치합니다.
MySQL Client 설치sudo apt-get install mysql-client
-
tutorial-mysql-1과 tutorial-mysql-2 데이터베이스에 접속하여 테이블을 생성합니다.
tutorial-mysql-1
- 다음 명령어를 실행하여 MySQL 데이터베이스에 접속합니다.
mysql -u --host ${END_POINT} -P 3306 ${USER_NAME} -p"${USER_PASSWORD}"
환경변수 설명 END_POINT🖌︎ tutorial-mysql-1 엔드포인트 주소 USER_NAME🖌︎ tutorial-mysql-1 사용자 이름 USER_PASSWORD🖌︎ tutorial-mysql-1 비밀번호 - SQL 쿼리를 사용하여 kakao_shop 데이터베이스와 테이블을 생성합니다.
-- 데이터베이스 생성
CREATE DATABASE kakao_shop;
-- 해당 데이터베이스 선택
USE kakao_shop;
-- 상품 정보 테이블 생성
CREATE TABLE products (
product_id INT AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(255) NOT NULL,
description TEXT,
price DECIMAL(10, 2) NOT NULL,
stock_quantity INT NOT NULL,
category VARCHAR(50),
seller VARCHAR(100)
);
-- 주문 정보 테이블 생성
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
customer_name VARCHAR(100) NOT NULL,
product_id INT,
quantity INT NOT NULL,
order_date DATE,
delivery_status ENUM('Processing', 'Shipped', 'Delivered') DEFAULT 'Processing'
);tutorial-mysql-2
- 다음 명령어를 실행하여 MySQL 데이터베이스에 접속합니다.
mysql -u --host ${END_POINT} -P 3306 ${USER_NAME} -p"${USER_PASSWORD}"
환경변수 설명 END_POINT🖌︎ tutorial-mysql-2 엔드포인트 주소 USER_NAME🖌︎ tutorial-mysql-2 사용자 이름 USER_PASSWORD🖌︎ tutorial-mysql-2 비밀번호 - SQL 쿼리를 사용하여 kakao_library 데이터베이스와 테이블을 생성합니다.
-- 데이터베이스 생성
CREATE DATABASE kakao_library;
-- 해당 데이터베이스 선택
USE kakao_library;
-- 도서 정보 테이블 생성
CREATE TABLE books (
book_id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
author VARCHAR(100) NOT NULL,
genre VARCHAR(50),
publication_date DATE,
isbn VARCHAR(20),
available BOOLEAN DEFAULT TRUE
);
-- 회원 정보 테이블 생성
CREATE TABLE members (
member_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) UNIQUE,
phone VARCHAR(20),
address VARCHAR(255),
member_since DATE
); - 다음 명령어를 실행하여 MySQL 데이터베이스에 접속합니다.
Getting started
Data Catalog는 카카오클라우드 내 조직과 사용자 데이터 자산을 파악하고 효율적으로 관리할 수 있도록 도와주는 완전 관리형 서비스로, 카탈로그, 데이터베이스, 테이블, 크롤러 구성되어 있습니다. Data Catalog 크롤러를 생성하기 위해서는 카탈로그, 데이터베이스, Object Storage Bucket이 필요합니다.
Step 1. Data Catalog 카탈로그 생성
카탈로그는 VPC 내 완전 관리형 중앙 리포지토리로, Data Catalog 서비스를 이용하기 위해 먼저 생성해야 합니다.
-
카카오클라우드 콘솔 > Analytics > Data Catalog 메뉴로 이동합니다.
-
카탈로그 메뉴에서 우측 [카탈로그 생성] 버튼을 클릭한 후, 다음과 같이 카탈로그를 생성합니다.
구분 항목 설정/입력값 이름 tutorial_catalog VPC 설정 VPC tutorial-vpc 서브넷 main
Step 2. Object Storage Bucket 생성
Data Catalog 데이터베이스 생성을 위해서는 Object Storage Bucket이 필요합니다.
-
카카오클라우드 콘솔 > Beyond Storage Service > Object Storage 메뉴로 이동합니다.
-
버킷 메뉴에서 우측 [+ 버킷 만들기] 버튼을 클릭한 후, 다음과 같이 버킷을 생성합니다.
구분 설정/입력값 유형 STANDARD 이름 tutorial-bucket
암호화 미사용 -
생성한 버킷에서 우측 [폴더 생성] 버튼을 클릭한 후, 다음과 같이 폴더를 생성합니다.
구분 설정/입력값 폴더 이름 tutorial-folder
Step 3. Data Catalog 데이터베이스 생성
데이터베이스는 테이블을 저장하는 컨테이너입니다. 데이터베이스를 생성하려면 먼저 카탈로그와 Object Storage Bucket이 생성되어 있어야 합니다.
-
카카오클라우드 콘솔 > Analytics > Data Catalog 메뉴로 이동합니다.
-
데이터베이스 메뉴에서 우측 [데이터베이스 생성] 버튼을 클릭한 후, 다음과 같이 데이터베이스를 생성합니다.
구분 항목 설정/입력값 카탈로그 tutorial_catalog 이름 tutorial_database
경로 버킷 이름 tutorial-bucket
디렉터리 tutorial-folder
Step 4. Data Catalog 크롤러 생성
두 개의 MySQL 메타데이터를 추출하기 위해 두 개의 크롤러를 생성합니다.
-
카카오클라우드 콘솔 > Analytics > Data Catalog 메뉴로 이동합니다.
-
크롤러 메뉴에서 우측 [크롤러 만들기] 버튼을 클릭한 후, 다음과 같이 크롤러를 생성합니다.
tutorial_crawler_1
구분 항목 설정/입력값 데이터베이스 tutorial_database 크롤러 이름 VPC tutorial_crawler_1 MySQL 전체경로 연결할 MySQL tutorial-mysql-1
MySQL 데이터베이스 이름 kakao_shop
MySQL 계정 MySQL 사용자 ID {USER_ID}
MySQL 비밀번호 {USER_PASSWORD}
테이블 Prefix tutorial_ 스케줄 온디멘드 tutorial_crawler_2
구분 항목 설정/입력값 데이터베이스 tutorial_database 크롤러 이름 VPC tutorial_crawler_2 MySQL 전체경로 연결할 MySQL tutorial-mysql-2
MySQL 데이터베이스 이름 kakao_library
MySQL 계정 MySQL 사용자 ID {USER_ID}
MySQL 비밀번호 {USER_PASSWORD}
테이블 Prefix tutorial_ 스케줄 온디멘드 안내MySQL의 상태가
Available
인 경우에만 크롤러가 생성되거나 동작할 수 있습니다.안내크롤러 생성 시 MySQL 계정 항목에 연결 테스트를 성공해야 크롤러를 생성할 수 있습니다.
Step 5. Data Catalog 크롤러 실행 및 결과 확인
- 크롤러 메뉴에서 크롤러 선택 후, 우측 상단 실행 버튼 클릭을 클릭합니다.
- 테이블 메뉴에서 추출한 메타데이터 정보를 확인할 수 있습니다.