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을 생성하겠습니다.
VPC 및 서브넷 생성
VPC 및 서브넷을 생성합니다.
-
카카오클라우드 콘솔 > Beyond Networking Service > VPC 메뉴로 이동합니다.
-
우측의 [+ VPC 생성] 버튼을 클릭한 후, 다음과 같이 VPC 및 서브넷을 생성합니다.
구분 항목 설정/입력값 VPC 정보 VPC 이름 tutorial-vpc VPC IP CIDR 블록 10.0.0.0/16 Availability Zone 가용 영역 개수 1 첫 번째 AZ 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분 정도 시간이 소요될 수 있습니다.
- 서브넷의 상태는
보안 그룹 설정
VPC에서 VM을 실행 시 해당 VM에 대한 보안을 강화하기 위해, 다음과 같이 보안 그룹을 생성하고 인바운드 정책을 추가합니다.
-
카카오클라우드 콘솔 > VPC 메뉴에서 보안 그룹을 선택합니다.
-
우측의 [+ 보안 그룹 생성] 버튼을 클릭한 후, 다음과 같이 보안 그룹을 생성합니다.
- 보안 그룹 이름과 설명을 아래와 같이 입력합니다.
보안 그룹 이름 | 보안 그룹 설명(선택) |
---|---|
tutorial-mysql-client-sg | MySQL Client 인스턴스의 보안정책 |
-
하단의 [+ 추가] 버튼을 클릭 후, 인바운드 규칙 조건을 아래와 같이 설정하고 [적용] 버튼을 클릭합니다.
나의 퍼블릭 IP 확인하기다음 버튼을 클릭하면 현재 사용 중인 나의 퍼블릭 IP를 확인할 수 있습니다.
프로토콜 | 출발지 | 포트 번호 | 정책 설명 |
---|---|---|---|
TCP | {사용자 Public IP}/32 | 22 | mysql-client inbound policy |
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 탭에서 확인할 수 있습니다.
-
관리형 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)
자동 백업 자동 백업 옵션 미사용
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 데이터베이스에 접속합니다.
작업 순서
Data Catalog는 카카오클라우드 내 조직과 사용자 데이터 자산을 파악하고 효율적으로 관리할 수 있도록 도와주는 완전 관리형 서비스로, 카탈로그, 데이터베이스, 테이블, 크롤러 구성되어 있습니다. Data Catalog 크롤러를 생성하기 위해서는 카탈로그, 데이터베이스, Object Storage Bucket이 필요합니다.
Step 1. Data Catalog 카탈로그 생성
카탈로그는 VPC 내 완전 관리형 중앙 리포지토리로, Data Catalog 서비스를 이용하기 위해 먼저 생성해야 합니다.
- 카카오클라우드 콘솔 > Analytics > Data Catalog 메뉴로 이동합니다.
- 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 메뉴로 이동합니다.
- Database 메뉴에서 우측 [데이터베이스 만들기] 버튼을 클릭한 후, 다음과 같이 데이터베이스를 생성합니다.
구분 | 항목 | 설정/입력값 |
---|---|---|
카탈로그 | tutorial_catalog | |
이름 | tutorial_database | |
경로 | 버킷 이름 | tutorial-bucket |
디렉터리 | tutorial-folder |
Step 4. Data Catalog 크롤러 생성
두 개의 MySQL 메타데이터를 추출하기 위해 두 개의 크롤러를 생성합니다.
-
카카오클라우드 콘솔 > Analytics > Data Catalog 메뉴로 이동합니다.
-
Crawler 메뉴에서 우측 [크롤러 만들기] 버튼을 클릭한 후, 다음과 같이 크롤러를 생성합니다.
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 크롤러 실행 및 결과 확인
- Crawler 메뉴에서 크롤러 선택 후, 우측 상단 실행 버튼 클릭을 클릭합니다.
- Table 메뉴에서 추출한 메타데이터 정보를 확인할 수 있습니다.