본문으로 바로가기
본문으로 바로가기

MySQL을 ClickHouse와 연동하기

이 페이지에서는 MySQL 테이블 엔진을 사용하여 MySQL 테이블에서 데이터를 읽는 방법을 설명합니다.

참고

ClickHouse Cloud에서는 MySQL ClickPipe (현재 공개 베타)을 사용하여 MySQL 테이블의 데이터를 ClickHouse로 쉽게 전송할 수도 있습니다.

MySQL 테이블 엔진을 사용하여 ClickHouse를 MySQL에 연결하기

MySQL 테이블 엔진을 사용하면 ClickHouse를 MySQL에 연결할 수 있습니다. SELECTINSERT SQL 문은 ClickHouse 또는 MySQL 테이블에서 모두 실행할 수 있습니다. 이 문서에서는 MySQL 테이블 엔진의 기본 사용 방법을 설명합니다.

1. MySQL 구성

  1. MySQL에서 데이터베이스를 생성하십시오.
  CREATE DATABASE db1;
  1. 테이블을 생성하십시오:
  CREATE TABLE db1.table1 (
    id INT,
    column1 VARCHAR(255)
  );
  1. 샘플 행을 삽입합니다:
  INSERT INTO db1.table1
    (id, column1)
  VALUES
    (1, 'abc'),
    (2, 'def'),
    (3, 'ghi');
  1. ClickHouse에서 연결할 때 사용할 사용자를 생성합니다:
  CREATE USER 'mysql_clickhouse'@'%' IDENTIFIED BY 'Password123!';
  1. 필요에 따라 권한을 부여합니다. (시연 목적상 mysql_clickhouse 사용자에게 관리자 권한을 부여합니다.)
  GRANT ALL PRIVILEGES ON *.* TO 'mysql_clickhouse'@'%';
참고

ClickHouse Cloud에서 이 기능을 사용하는 경우, ClickHouse Cloud IP 주소에 MySQL 인스턴스 접근을 허용해야 할 수 있습니다. 송신(egress) 트래픽에 대한 자세한 내용은 ClickHouse Cloud Endpoints API를 확인하십시오.

2. ClickHouse에서 테이블 정의하기

  1. 이제 MySQL 테이블 엔진을 사용하는 ClickHouse 테이블을 CREATE합니다.
  CREATE TABLE mysql_table1 (
    id UInt64,
    column1 String
  )
  ENGINE = MySQL('mysql-host.domain.com','db1','table1','mysql_clickhouse','Password123!')

최소한 다음 파라미터가 필요합니다:

parameterDescriptionexample
host호스트 이름 또는 IPmysql-host.domain.com
databaseMySQL 데이터베이스 이름db1
tableMySQL 테이블 이름table1
userMySQL에 연결할 때 사용할 사용자 이름mysql_clickhouse
passwordMySQL에 연결할 때 사용할 비밀번호Password123!
참고

전체 파라미터 목록은 MySQL 테이블 엔진 문서를 참조하십시오.

3. 통합 테스트하기

  1. MySQL에서 샘플 행을 삽입합니다:
  INSERT INTO db1.table1
    (id, column1)
  VALUES
    (4, 'jkl');
  1. MySQL 테이블에 있던 기존 행들이 ClickHouse 테이블에 있고, 방금 추가한 새 행도 함께 포함되어 있는지 확인합니다.
  SELECT
      id,
      column1
  FROM mysql_table1

4개의 행이 보여야 합니다.

  Query id: 6d590083-841e-4e95-8715-ef37d3e95197

  ┌─id─┬─column1─┐
  │  1 │ abc     │
  │  2 │ def     │
  │  3 │ ghi     │
  │  4 │ jkl     │
  └────┴─────────┘

  4 rows in set. Elapsed: 0.044 sec.
  1. ClickHouse 테이블에 행을 하나 추가합니다:
  INSERT INTO mysql_table1
    (id, column1)
  VALUES
    (5,'mno')
  1. MySQL에 새로운 행이 생성된 것을 확인하십시오:
  mysql> select id,column1 from db1.table1;

새 행이 표시되어야 합니다.

  +------+---------+
  | id   | column1 |
  +------+---------+
  |    1 | abc     |
  |    2 | def     |
  |    3 | ghi     |
  |    4 | jkl     |
  |    5 | mno     |
  +------+---------+
  5 rows in set (0.01 sec)

요약

MySQL 테이블 엔진을 사용하면 ClickHouse를 MySQL에 연결해 양방향으로 데이터를 교환할 수 있습니다. 더 자세한 내용은 MySQL 테이블 엔진 문서 페이지를 참고하십시오.