You need to enable JavaScript to run this app.
ByteHouse云数仓版

ByteHouse云数仓版

复制全文
外部 Catalog
MySQL Catalog
复制全文
MySQL Catalog

Bytehouse 云数仓版支持接入 MySQL Catalog,您无需手动创建外部数据库、表,可通过 MySQL Catalog 查询其中的数据。本文将介绍如何创建和使用 MySQL Catalog。

前提条件

请提前获取以下 MySQL 连接信息,您可参考您使用的 MySQL 服务的官方文档获取:

  • IP 地址
  • 端口号
  • 用户名及密码

使用限制
  • 暂不支持在 MySQL Catalog 内手动新增数据库、表,以及相关的 ALTER 操作。
  • MySQL Catalog 要求 ByteHouse 引擎版本为 2.3.2.0 及以上。使用前请确认您的引擎版本满足此要求,可通过 ByteHouse 控制台的租户管理 > 基本信息页面查看当前引擎版本。如果您的引擎版本不符合要求,可提交工单,联系 ByteHouse 团队升级引擎。

创建 MySQL Catalog
CREATE EXTERNAL CATALOG [IF NOT EXISTS] {catalog_name}
PROPERTIES type='mysql', 
address='ip:port',
username='<user>',
password='<password>';

参数

配置说明

创建 Catalog 描述

  • {catalogName} 替换为您自定义的 Catalog 名称。
  • IF NOT EXISTS:判断新建的表是否已存在,如果catalog_name数据库已经存在,则 ByteHouse 不会创建新数据库并且:
    • 如果指定了子句,则不会引发异常。
    • 如果未指定子句,则抛出异常。

配置参数

  • type='mysql':固定为 mysql。
  • address:MySQL 服务的连接地址。格式为 ip:port
    • ip 为 MySQL 服务器的 IP 地址,您可参考您使用的 MySQL 服务的官方文档获取 IP 地址。
    • port 为 MySQL 服务的端口号,您可参考您使用的 MySQL 服务的官方文档获取端口号。
  • username:MySQL 服务的用户名,您可参考您使用的 MySQL 服务的官方文档获取用户名。
  • password:MySQL 服务的密码,您可参考您使用的 MySQL 服务的官方文档获取密码。

查看 MySQL Catalog

查看您创建的所有 Catalog。

SHOW EXTERNAL CATALOGS;

查看指定 Catalog 的 Schema 信息。

SHOW CREATE EXTERNAL CATALOG your_catalog_name;

使用 MySQL Catalog

假设您已经创建了一个名为 mysql_catalog 的外部 Catalog,您可通过以下命令查询该 Catalog 中的数据。

查询 MySQL Catalog 中的表

您可以通过 catalog_name.db_name.table_name 这种三段式命名方式直接访问 MySQL Catalog 中的表,例如:

SELECT * FROM mysql_catalog.mysql_db_name.mysql_table_name;

您也可以使用该方式访问 ByteHouse 云数仓版原生的 CnchMergeTree 表。其中,cnch(cloud-native-clickhouse 的缩写)为 ByteHouse 云数仓版默认 Catalog 的名字。

SELECT * FROM cnch.cnch_db_name.cnch_table_name;
-- 等同于 SELECT * FROM cnch_db_name.cnch_table_name; 

跨 Catalog 查询

利用外部 Catalog,您可以直接将 MySQL 外表和 ByteHouse 的 CnchMergeTree 表实现 join 查询。

SELECT * FROM mysql_catalog.mysql_db.mysql_table
UNION ALL
SELECT (1) FROM cnch.cnch_db.cnch_table;

列出 MySQL Catalog 中的数据库、表

列出 Catalog 中的数据库名。

SHOW DATABASES FROM catalog_name;

列出数据库中的表名。

SHOW TABLES FROM catalog_name.database_name;

获取表的创建语句。

SHOW CREATE TABLE catalog_name.database_name.table_name;

切换 Catalog

您可以使用如下 SQL 来切换查询的 Catalog:

SWITCH CATALOG catalog_name;

此时再运行查询语句,ByteHouse 会从 MySQL Catalog 下的指定的数据库、表中读取数据。

SELECT * FROM mysql_db.mysql_table;

如果需切换回 ByteHouse 默认的 Catalog,您可以使用以下任意一条命令:

# 方式 1
SWITCH CATALOG default;

# 方式 2
SWITCH CATALOG cnch;

您也可以使用以下命令,直接将默认的数据库切换到 MySQL Catalog 下的指定数据库:

USE mysql_catalog.mysql_db;

如需切换回 ByteHouse 内表,可使用以下命令:

USE cnch.cnch_database_name;

查询当前使用的 Catalog

您可通过 currentCatalog() 函数查询当前 Catalog。

SELECT currentCatalog();

删除 MySQL Catalog

当您不再需要通过该 Catalog 访问 MySQL 数据时,可执行此命令删除 Catalog 以清理资源。

DROP EXTERNAL CATALOG [IF EXISTS] catalog_name;

相关文档

通过 ByteHouse 云数仓版控制台使用 MySQL Catalog

ByteHouse 云数仓版也支持通过 ByteHouse 云数仓版控制台创建和使用 MySQL Catalog,详情请参见管理外部 Catalog

使用 MySQL 外表

除了通过 MySQL Catalog 访问 MySQL 数据外,ByteHouse 也支持通过外表方式查询 MySQL 数据,详情请参考 MySQL 外表

最近更新时间:2026.01.08 15:44:03
这个页面对您有帮助吗?
有用
有用
无用
无用