跳转到主内容
跳转到主内容

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

注意

对于 ClickHouse Cloud,您还可以使用 MySQL ClickPipe (当前处于 Public Beta 阶段) ,轻松将 MySQL 表中的数据迁移到 ClickHouse。

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

MySQL 表引擎允许将 ClickHouse 连接到 MySQL。可以在 ClickHouse 或 MySQL 表中执行 SELECTINSERT 语句。本文介绍 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 实例。 有关出站流量的详细信息,请参阅 ClickHouse Cloud Endpoints API

2. 在 ClickHouse 中定义一张表

  1. 现在让我们创建一个使用 MySQL 表引擎的 ClickHouse 表:
  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
user连接到 MySQL 的用户名mysql_clickhouse
password连接到 MySQL 的密码Password123!
注意

请参阅 MySQL table engine 文档页面以获取完整的参数列表。

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