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

MySQL 데이터베이스 엔진

Not supported in ClickHouse Cloud

원격 MySQL 서버에 있는 데이터베이스에 연결하여 INSERTSELECT 쿼리를 수행하고 ClickHouse와 MySQL 간에 데이터를 교환할 수 있습니다.

MySQL 데이터베이스 엔진은 쿼리를 MySQL 서버용으로 변환하여 SHOW TABLES 또는 SHOW CREATE TABLE과 같은 작업을 수행할 수 있도록 합니다.

다음 쿼리는 실행할 수 없습니다:

  • RENAME
  • CREATE TABLE
  • ALTER

데이터베이스 생성

CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]
ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')

엔진 매개변수

  • host:port — MySQL 서버 주소.
  • database — 원격 데이터베이스 이름.
  • user — MySQL 사용자.
  • password — 사용자 비밀번호.

데이터 타입 지원

MySQLClickHouse
UNSIGNED TINYINTUInt8
TINYINTInt8
UNSIGNED SMALLINTUInt16
SMALLINTInt16
UNSIGNED INT, UNSIGNED MEDIUMINTUInt32
INT, MEDIUMINTInt32
UNSIGNED BIGINTUInt64
BIGINTInt64
FLOATFloat32
DOUBLEFloat64
DATEDate
DATETIME, TIMESTAMPDateTime
BINARYFixedString

그 외의 MySQL 데이터 타입은 모두 String으로 변환됩니다.

널 허용 데이터 타입이 지원됩니다.

전역 변수 지원

더 나은 호환성을 위해 MySQL 스타일인 @@identifier 형식으로 전역 변수를 사용할 수 있습니다.

다음 변수가 지원됩니다:

  • version
  • max_allowed_packet
참고

현재 이 변수들은 단순한 스텁(stub)이며 실제로는 어떤 항목에도 대응하지 않습니다.

예제:

SELECT @@version;

사용 예시

MySQL 테이블:

mysql> USE test;
Database changed

mysql> CREATE TABLE `mysql_table` (
    ->   `int_id` INT NOT NULL AUTO_INCREMENT,
    ->   `float` FLOAT NOT NULL,
    ->   PRIMARY KEY (`int_id`));
Query OK, 0 rows affected (0,09 sec)

mysql> insert into mysql_table (`int_id`, `float`) VALUES (1,2);
Query OK, 1 row affected (0,00 sec)

mysql> select * from mysql_table;
+------+-----+
| int_id | value |
+------+-----+
|      1 |     2 |
+------+-----+
1 row in set (0,00 sec)

MySQL 서버와 데이터를 주고받는 ClickHouse 데이터베이스:

CREATE DATABASE mysql_db ENGINE = MySQL('localhost:3306', 'test', 'my_user', 'user_password') SETTINGS read_write_timeout=10000, connect_timeout=100;
SHOW DATABASES
┌─name─────┐
│ default  │
│ mysql_db │
│ system   │
└──────────┘
SHOW TABLES FROM mysql_db
┌─name─────────┐
│  mysql_table │
└──────────────┘
SELECT * FROM mysql_db.mysql_table
┌─int_id─┬─value─┐
│      1 │     2 │
└────────┴───────┘
INSERT INTO mysql_db.mysql_table VALUES (3,4)
SELECT * FROM mysql_db.mysql_table
┌─int_id─┬─value─┐
│      1 │     2 │
│      3 │     4 │
└────────┴───────┘