本页介绍如何使用 MySQL 表引擎从 MySQL 表中读取数据。
使用 MySQL 表引擎将 ClickHouse 连接到 MySQL
MySQL 表引擎可让你将 ClickHouse 连接到 MySQL。SELECT 和 INSERT 语句既可以在 ClickHouse 中执行,也可以在 MySQL 表中执行。本文介绍如何使用 MySQL 表引擎的基本方法。
配置 MySQL
- 在 MySQL 中创建一个数据库:
CREATE DATABASE db1;- 创建一个表:
CREATE TABLE db1.table1 (
id INT,
column1 VARCHAR(255)
);- 插入示例行:
INSERT INTO db1.table1
(id, column1)
VALUES
(1, 'abc'),
(2, 'def'),
(3, 'ghi');- 创建一个用户,以便从 ClickHouse 连接:
CREATE USER 'mysql_clickhouse'@'%' IDENTIFIED BY 'Password123!';- 根据需要授予特权。 (为便于演示,这里向
mysql_clickhouse用户授予管理员特权。)
GRANT ALL PRIVILEGES ON *.* TO 'mysql_clickhouse'@'%';在 ClickHouse 中定义表
- 现在我们来创建一个使用
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! |
测试集成
- 在 MySQL 中,插入一行示例数据:
INSERT INTO db1.table1
(id, column1)
VALUES
(4, 'jkl');- 注意: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.- 向 ClickHouse 表中添加一行数据:
INSERT INTO mysql_table1
(id, column1)
VALUES
(5,'mno')- 注意,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 表引擎 的文档页面。