본문으로 건너뛰기

Data Catalog 크롤러를 이용한 MySQL 메타데이터 추출

Data Catalog 크롤러를 활용하여 두 개의 MySQL 데이터베이스의 메타데이터를 추출하는 핸즈온 튜토리얼을 제공합니다.

기본 정보

시나리오 소개​

이번 시나리오에서는 카카오클라우드 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. 카카오클라우드 콘솔 > Networking > VPC 메뉴로 이동합니다.

  2. 우측의 [+ VPC 생성] 버튼을 클릭한 후, 다음과 같이 VPC 및 서브넷을 생성합니다.

    구분항목설정/입력값
    VPC 정보VPC 이름tutorial-vpc
    VPC 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. 카카오클라우드 콘솔 > Networking > 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. 카카오클라우드 콘솔 > Virtual Machine 메뉴로 이동합니다.

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

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

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

4. 관리형 MySQL 생성​

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

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

  2. 인스턴스 그룹 메뉴에서 [인스턴스 그룹 생성] 버튼을 클릭한 뒤 두 개의 인스턴스 그룹을 생성합니다.

    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🖌︎tutorial-mysql-client 인스턴스의 퍼블릭 IP
  3. MySQL Client를 설치합니다. (설치 전 apt-get update를 실행합니다.)

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

    tutorial-mysql-1
    1. 다음 명령어를 실행하여 MySQL 데이터베이스에 접속합니다.
    mysql --user=${USER_NAME} --password=${USER_PASSWORD} --host=${ENDPOINT}
    # 예: mysql --user=kakao --password=admin1234 --host=mysql-1.kakaocloud.com
    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 --user=${USER_NAME} --password=${USER_PASSWORD} --host=${ENDPOINT}
    # 예: mysql --user=kakao --password=admin1234 --host=mysql-1.a.database.cloud.com
    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
    );

시작하기​

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. 카카오클라우드 콘솔 > Storage > 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
    크롤러 이름tutorial_crawler_1
    MySQL 전체경로연결할 MySQLtutorial-mysql-1
    MySQL 데이터베이스 이름kakao_shop
    MySQL 계정MySQL 사용자 ID{USER_ID}
    MySQL 비밀번호{USER_PASSWORD}
    테이블 Prefixtutorial_
    스케줄온디멘드
    tutorial_crawler_2
    구분항목설정/입력값
    데이터베이스tutorial_database
    크롤러 이름tutorial_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