Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

将 MySQL 集成到 ClickHouse

本页介绍如何使用 MySQL 表引擎从 MySQL 表中读取数据。

使用 MySQL 表引擎将 ClickHouse 连接到 MySQL

MySQL 表引擎可让你将 ClickHouse 连接到 MySQL。SELECTINSERT 语句既可以在 ClickHouse 中执行,也可以在 MySQL 表中执行。本文介绍如何使用 MySQL 表引擎的基本方法。

配置 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 中定义表

  1. 现在我们来创建一个使用 MySQL 表引擎的 ClickHouse 表:
CREATE TABLE mysql_table1 (
  id UInt64,
  column1 String
)
ENGINE = MySQL('mysql-host.domain.com','db1','table1','mysql_clickhouse','Password123!')

最少需要以下参数:

parameter Description example
host 主机名或 IP 地址 mysql-host.domain.com
database MySQL 数据库名称 db1
table MySQL 表名称 table1
user 连接到 MySQL 的用户名 mysql_clickhouse
password 连接到 MySQL 的密码 Password123!

测试集成

  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 表引擎 的文档页面。

Navigation