更新时间:2024-11-28 GMT+08:00

ClickHouse访问RDS MySQL服务

ClickHouse面向OLAP场景提供高效的数据分析能力,支持通过MySQL等数据库引擎将远程数据库服务器中的表映射到ClickHouse集群中,后续可以在ClickHouse中进行数据分析。以下操作通过ClickHouse集群和RDS服务下的MySQL数据库实例对接进行举例说明。

前提条件

  • 已提前准备好对接的RDS数据库实例及数据库用户名、密码。详细操作可以参考创建和连接RDS数据库实例
  • 已成功创建ClickHouse集群且集群和实例状态正常。

约束限制

  • RDS数据库实例和ClickHouse集群在相同的VPC和子网内。
  • 在进行数据同步操作时需要评估对源数据库和目标数据库性能的影响,同时建议您在业务低峰期执行数据同步。
  • 当前ClickHouse支持和RDS服务下的MySQL、PostgreSQL实例进行对接,不支持对接SQL Server实例。

ClickHouse通过MySQL引擎对接RDS服务

MySQL引擎用于将远程的MySQL服务器中的表映射到ClickHouse中,并允许您对表进行INSERT和SELECT查询,以方便您在ClickHouse与MySQL之间进行数据交换。

  • MySQL引擎使用语法:
    CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]
    ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')
    表1 MySQL数据库引擎参数说明

    参数

    描述

    hostport

    RDS服务MySQL数据库实例IP地址和端口。

    database

    RDS服务MySQL数据库名。

    user

    RDS服务MySQL数据库用户名。

    password

    RDS服务MySQL数据库用户密码。

    MySQL引擎使用示例:

    1. 连接到RDS服务的MySQL数据库。详细操作可以参考RDS服务MySQL实例连接
    2. 在MySQL数据库上创建表,并插入数据。
    3. 使用客户端命令连接ClickHouse。
      非安全集群连接命令
      ./clickhouse client --host 集群内网地址   --port 端口 --user admin --password password

      安全集群连接命令,详细操作请参见ClickHouse安全通道章节。

      ./clickhouse client --host 集群内网地址   --port 端口 --user admin --password password --secure --config-file /root/config.xml

      集群内网地址:集群详情页面中集群访问地址,这里替换成您自己购买的集群的访问地址。

    4. 在ClickHouse中创建MySQL引擎的数据库,创建成功后自动与MySQL服务器交换数据。
      CREATE DATABASE mysql_db ENGINE = MySQL('RDS服务MySQL数据库实例IP地址:MySQL数据库实例端口', 'MySQL数据库名', 'MySQL数据库用户名', 'MySQL数据库用户名密码');
    5. 切换到新建的数据库mysql_db,并查询表数据。
      USE mysql_db;

      在ClickHouse中查询MySQL数据库表数据。

      SELECT * FROM mysql_table;
      ┌─int_id─┬─float─┐
      │      1   │     2   │
      └─────┴──── ┘

      新增插入数据后也可以正常进行查询。

      INSERT INTO mysql_table VALUES (3,4);
      SELECT * FROM mysql_table;
      ┌─int_id─┬─float─┐
      │      1   │       2 │
      │      3   │       4 │
      └─────┴──── ┘