本文简单介绍一下ClickHouse 中的 MaterializedMySQL
数据库引擎的使用方法、设置、特性和限制。以下是具体的内容和步骤:
-
介绍和使用说明:
MaterializedMySQL
是一个实验性的数据库引擎。- 它允许创建一个 ClickHouse 数据库,其中包含了 MySQL 中的所有表和数据。
- ClickHouse 作为 MySQL 的副本,读取 binlog 并执行 DDL 和 DML 查询。
-
创建数据库:
- 使用
CREATE DATABASE
语句来创建一个MaterializedMySQL
数据库。 - 语法示例:
CREATE DATABASE [IF NOT EXISTS] db_name ENGINE = MaterializedMySQL('host:port', ['database' | database], 'user', 'password') [SETTINGS ...] [TABLE OVERRIDE table1 (...), TABLE OVERRIDE table2 (...)]
- 使用
-
引擎参数和设置:
- 包括 MySQL 服务器端点、数据库名称、用户和密码。
- 引擎设置包括缓存行数、缓存字节数、数据缓存时间等。
-
MySQL 服务器端的设置:
default_authentication_plugin
必须设置为mysql_native_password
。gtid_mode
必须开启,并设置enforce_gtid_consistency = on
。
-
虚拟列:
- 在
MaterializedMySQL
中使用ReplacingMergeTree
表,包含虚拟的_sign
和_version
列。
- 在
-
数据类型支持:
- 列出了 MySQL 数据类型和相对应的 ClickHouse 数据类型。
-
兼容性限制和特定建议:
- 比如 MySQL 表必须包含主键,枚举字段值的范围限制等。
-
DDL 查询:
- MySQL 的 DDL 查询会转换为相应的 ClickHouse DDL 查询。
-
数据复制:
- 描述了如何处理 INSERT、DELETE 和 UPDATE 查询。
-
从 MaterializedMySQL 表中选择数据:
- SELECT 查询的特定要求,比如自动应用
FINAL
修饰符和_sign=1
的默认条件。
- SELECT 查询的特定要求,比如自动应用
-
索引转换:
- MySQL 的
PRIMARY KEY
和INDEX
转换为 ClickHouse 表的ORDER BY
语句。
- MySQL 的
-
表覆盖:
- 介绍了如何使用表覆盖来自定义 ClickHouse DDL 查询,优化架构。
-
使用示例:
- 提供了在 MySQL 和 ClickHouse 中创建和操作数据库的示例。
-
注意事项:
- 包括如何避免破坏复制、手动操作数据库和表的禁止等。
这个文档为 ClickHouse 用户提供了一个全面的指南,用于理解和使用 MaterializedMySQL
引擎,包括如何设置和操作相关的数据库和表。