본문으로 건너뛰기

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 및 서브넷을 생성합니다.

  1. 카카오클라우드 콘솔 > Beyond Networking Service > VPC 메뉴로 이동합니다.

  2. 우측의 [+ 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
  3. 하단에 생성되는 토폴로지를 확인 후, 이상이 없다면 [생성] 버튼을 클릭합니다.

    • 서브넷의 상태는 Pending Create > Pending Update > Active 순서로 변경됩니다. Active 상태가 되어야 다음 단계를 진행할 수 있습니다.
    • 생성까지 5 ~ 10분 정도 시간이 소요될 수 있습니다.

2. 보안 그룹 설정

VPC에서 VM을 실행 시 해당 VM에 대한 보안을 강화하기 위해, 다음과 같이 보안 그룹을 생성하고 인바운드 규칙을 추가합니다.

  1. 카카오클라우드 콘솔 > Beyond Networking Service > VPC > 보안 그룹으로 이동합니다.

  2. 우측의 [보안 그룹 생성] 버튼을 클릭한 후, 다음과 같이 보안 그룹을 생성합니다.

    1. 보안 그룹 이름과 설명을 아래와 같이 입력합니다.

      보안 그룹 이름보안 그룹 설명(선택)
      tutorial-mysql-client-sgMySQL Client 인스턴스의 보안정책
    2. 하단의 [+ 추가] 버튼을 클릭 후, 인바운드 규칙 조건을 아래와 같이 설정하고 [적용] 버튼을 클릭합니다.

      나의 퍼블릭 IP 확인하기

      다음 버튼을 클릭하면 현재 사용 중인 나의 퍼블릭 IP를 확인할 수 있습니다.

      프로토콜출발지포트 번호정책 설명
      TCP  {사용자 퍼블릭 IP}/32   22   mysql-client inbound policy

3. MySQL Client 인스턴스 생성 및 설정

MySQL Client 인스턴스에 MySQL Client를 설치하면 카카오클라우드 MySQL 리소스에 접근할 수 있습니다.

  1. 카카오클라우드 콘솔 > Beyond Compute Service > Virtual Machine 메뉴로 이동합니다.

  2. 인스턴스 메뉴에서 [인스턴스 생성] 버튼을 클릭한 후, 다음과 같이 VM 인스턴스를 생성합니다.

    구분항목설정/입력값비고
    기본 정보이름tutorial-mysql-client
    개수1
    이미지Ubuntu 20.04 - 5.4.0-173⚠️ NVIDIA 이미지가 아닌 일반 이미지 선택
    인스턴스 유형m2a.large
    볼륨루트 볼륨10
    키 페어{USER_KEYPAIR}⚠️ 키 페어는 최초 1회 안전하게 보관해야 합니다.
    잃어버린 키는 복구할 수 없으며, 재발급이 필요합니다.
    네트워크VPCtutorial-vpc
    서브넷main (10.0.0.0/20)
    보안 그룹tutorial-mysql-client-sg
  3. Virtual Machine > 인스턴스 메뉴에서 위에서 생성했던 tutorial-mysql-client 인스턴스를 선택 후, 우측의 인스턴스 작업에서 [퍼블릭 IP 연결] 버튼을 클릭합니다.

    • 연결된 퍼블릭 IP는 Beyond Networking Service > VPC > 퍼블릭 IP 메뉴에서 확인할 수 있습니다.

4. 관리형 MySQL 생성

카카오클라우드의 MySQL은 완전 관리형 데이터베이스 서비스로 VPC 환경에서 제공됩니다. Data Catalog 크롤러로 메타데이터를 추출하기 위해서 두 개의 카카오클라우드 MySQL을 생성합니다.

  1. 카카오클라우드 콘솔 > Data Store > MySQL 메뉴로 이동합니다.

  2. Instance Group 메뉴에서 [인스턴스 그룹 만들기] 버튼을 클릭 후, 두 개의 인스턴스 그룹을 생성합니다.

    tutorial-mysql-1
    구분항목설정/입력값
    기본 설정인스턴스 그룹 이름tutorial-mysql-1
    MySQL 설정엔진 버전지정된 값을 사용
    MySQL 사용자 이름{USER_NAME}
    MySQL 비밀번호{USER_PASSWORD}
    인스턴스 가용성/개수단일 (Primary 인스턴스)
    인스턴스 유형m2a.large
    스토리지 유형/크기100
    로그 스토리지 유형/크기100
    네트워크 설정VPCtutorial-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
    네트워크 설정VPCtutorial-vpc
    서브넷tutorial-vpc_{VPC_ID}_sn_1 (10.0.16.0/20)
    자동 백업자동 백업 옵션미사용

5. MySQL 데이터베이스 및 테이블 생성

MySQL Client 인스턴스에 SSH로 접속한 후, MySQL Client로 데이터베이스 접속하여 테이블을 생성합니다.

  1. 로컬 환경에서 터미널 실행 후, 키페어 파일을 다운로드 받은 폴더로 이동합니다.

    • 프라이빗 키 파일을 최초 생성해서 사용했다면, 기본적으로 다운로드 폴더에 저장됩니다. (cd ~/Downloads)
  2. 다음 명령어를 실행하여 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 확인
  3. MySQL Client를 설치합니다.

    MySQL Client 설치
    sudo apt-get install mysql-client
  4. tutorial-mysql-1과 tutorial-mysql-2 데이터베이스에 접속하여 테이블을 생성합니다.

    tutorial-mysql-1
    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 비밀번호


    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
    1. 다음 명령어를 실행하여 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 비밀번호


    1. 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
    );

Getting started

Data Catalog는 카카오클라우드 내 조직과 사용자 데이터 자산을 파악하고 효율적으로 관리할 수 있도록 도와주는 완전 관리형 서비스로, 카탈로그, 데이터베이스, 테이블, 크롤러 구성되어 있습니다. Data Catalog 크롤러를 생성하기 위해서는 카탈로그, 데이터베이스, Object Storage Bucket이 필요합니다.

Step 1. Data Catalog 카탈로그 생성

카탈로그는 VPC 내 완전 관리형 중앙 리포지토리로, Data Catalog 서비스를 이용하기 위해 먼저 생성해야 합니다.

  1. 카카오클라우드 콘솔 > Analytics > Data Catalog 메뉴로 이동합니다.

  2. 카탈로그 메뉴에서 우측 [카탈로그 생성] 버튼을 클릭한 후, 다음과 같이 카탈로그를 생성합니다.

    구분항목설정/입력값
    이름tutorial_catalog
    VPC 설정VPCtutorial-vpc
    서브넷main

Step 2. Object Storage Bucket 생성

Data Catalog 데이터베이스 생성을 위해서는 Object Storage Bucket이 필요합니다.

  1. 카카오클라우드 콘솔 > Beyond Storage Service > Object Storage 메뉴로 이동합니다.

  2. 버킷 메뉴에서 우측 [+ 버킷 만들기] 버튼을 클릭한 후, 다음과 같이 버킷을 생성합니다.

    구분설정/입력값
    유형STANDARD
    이름tutorial-bucket
    암호화미사용
  3. 생성한 버킷에서 우측 [폴더 생성] 버튼을 클릭한 후, 다음과 같이 폴더를 생성합니다.

    구분설정/입력값
    폴더 이름tutorial-folder

Step 3. Data Catalog 데이터베이스 생성

데이터베이스는 테이블을 저장하는 컨테이너입니다. 데이터베이스를 생성하려면 먼저 카탈로그와 Object Storage Bucket이 생성되어 있어야 합니다.

  1. 카카오클라우드 콘솔 > Analytics > Data Catalog 메뉴로 이동합니다.

  2. 데이터베이스 메뉴에서 우측 [데이터베이스 생성] 버튼을 클릭한 후, 다음과 같이 데이터베이스를 생성합니다.

    구분항목설정/입력값
    카탈로그tutorial_catalog
    이름tutorial_database
    경로버킷 이름tutorial-bucket
    디렉터리tutorial-folder

Step 4. Data Catalog 크롤러 생성

두 개의 MySQL 메타데이터를 추출하기 위해 두 개의 크롤러를 생성합니다.

  1. 카카오클라우드 콘솔 > Analytics > Data Catalog 메뉴로 이동합니다.

  2. 크롤러 메뉴에서 우측 [크롤러 만들기] 버튼을 클릭한 후, 다음과 같이 크롤러를 생성합니다.

    tutorial_crawler_1
    구분항목설정/입력값
    데이터베이스tutorial_database
    크롤러 이름VPCtutorial_crawler_1
    MySQL 전체경로연결할 MySQLtutorial-mysql-1
    MySQL 데이터베이스 이름kakao_shop
    MySQL 계정MySQL 사용자 ID{USER_ID}
    MySQL 비밀번호{USER_PASSWORD}
    테이블 Prefixtutorial_
    스케줄온디멘드
    tutorial_crawler_2
    구분항목설정/입력값
    데이터베이스tutorial_database
    크롤러 이름VPCtutorial_crawler_2
    MySQL 전체경로연결할 MySQLtutorial-mysql-2
    MySQL 데이터베이스 이름kakao_library
    MySQL 계정MySQL 사용자 ID{USER_ID}
    MySQL 비밀번호{USER_PASSWORD}
    테이블 Prefixtutorial_
    스케줄온디멘드
    안내

    MySQL의 상태가 Available인 경우에만 크롤러가 생성되거나 동작할 수 있습니다.

    안내

    크롤러 생성 시 MySQL 계정 항목에 연결 테스트를 성공해야 크롤러를 생성할 수 있습니다.

Step 5. Data Catalog 크롤러 실행 및 결과 확인

  1. 크롤러 메뉴에서 크롤러 선택 후, 우측 상단 실행 버튼 클릭을 클릭합니다.
  2. 테이블 메뉴에서 추출한 메타데이터 정보를 확인할 수 있습니다.

테이블 정보

alt text

스키마 정보

alt text