网站首页 > 博客文章 正文
将 MySQL 与 ClickHouse 集成有两种方式
- 使用 MySQL 表引擎,从 MySQL 表中读取
- 使用 MaterializedMySQL 数据库引擎,将 MySQL 中的数据库与 ClickHouse 中的数据库同步
MySQL 引擎允许对存储在远程 MySQL 服务器上的数据执行 SELECT 和 INSERT 操作。
语法如下:
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2],
...
) ENGINE = MySQL({host:port, database, table, user, password[, replace_query, on_duplicate_clause] | named_collection[, option=value [,..]]})
SETTINGS
[ connection_pool_size=16, ]
[ connection_max_tries=3, ]
[ connection_wait_timeout=5, ]
[ connection_auto_close=true, ]
[ connect_timeout=10, ]
[ read_write_timeout=300 ]
;
表结构可以与原始MySQL表结构不同:
- 列名应与原始MySQL表中的列名相同,但可以仅使用这些列中的一部分,并且可以以任何顺序使用。
- 列类型可能与原始MySQL表中的不同。ClickHouse会尝试将值转换为ClickHouse数据类型。
- external_table_functions_use_nulls设置定义如何处理Nullable列。默认值为1。如果为0,则表函数不会创建Nullable列,并在null值的位置插入默认值。对于数组中的NULL值,也适用此设置。
引擎参数:
- host:port — MySQL服务器地址。
- database — 远程数据库名称。
- table — 远程表名称。
- user — MySQL用户。
- password — 用户密码。
- replace_query — 将INSERT INTO查询转换为REPLACE INTO的标志。如果replace_query=1,则会替换查询。
- on_duplicate_clause — 添加到INSERT查询的ON DUPLICATE KEY on_duplicate_clause表达式。例如:INSERT INTO t (c1,c2) VALUES ('a', 2) ON DUPLICATE KEY UPDATE c2 = c2 + 1,其中on_duplicate_clause为UPDATE c2 = c2 + 1。请参阅MySQL文档,了解可以与ON DUPLICATE KEY子句一起使用的on_duplicate_clause。要指定on_duplicate_clause,您需要将replace_query参数传递为0。如果同时传递replace_query = 1和on_duplicate_clause,则ClickHouse会生成异常。
- 参数还可以使用命名集合进行传递。在这种情况下,主机和端口应分别指定。此方法适用于生产环境。
对于简单的 WHERE 子句,比如 =、!=、>、>=、<、<=,当前是在 MySQL 服务器上执行的。
而对于其他条件和 LIMIT 抽样约束,则在 MySQL 查询完成后才会在 ClickHouse 中执行。
支持多个副本,必须用|列出。例如:
CREATE TABLE test_replicas (id UInt32, name String, age UInt32, money UInt32) ENGINE = MySQL(`mysql{2|3|4}:3306`, 'clickhouse', 'test_replicas', 'root', 'clickhouse');
参数配置
默认设置并不是非常高效,因为它们甚至不会重用连接。这些设置可以增加服务器每秒运行的查询数量。
connection_auto_close 允许在查询执行后自动关闭连接,即禁用连接重用。
- 可能的取值:
- 1 — 允许自动关闭连接,因此禁用了连接重用。
- 0 — 不允许自动关闭连接,因此启用了连接重用。
默认值:1。
connection_max_tries 设置故障转移池的重试次数。
可能的取值:
- 正整数。
- 0 — 故障转移池没有重试。
默认值:3。
connection_pool_size 连接池的大小(如果所有连接都在使用中,查询将等待直到某个连接被释放)。
可能的取值:
- 正整数。
默认值:16。
connection_wait_timeout 等待空闲连接的超时时间(如果已经有connection_pool_size个活动连接),0 - 不等待。
可能的取值:
- 正整数。
默认值:5。
connect_timeout 连接超时(秒)。
可能的取值:
- 正整数。
默认值:10。
read_write_timeout 读/写超时(秒)。
可能的取值:
- 正整数。
默认值:300。
注意事项
- 在 INSERT 查询中,为了区分表函数 mysql(...) 和带列名的表名列表,必须使用关键字 FUNCTION 或 TABLE FUNCTION。
- 此引擎适用于作为clickhouse的字典表。数据量小的话可以考虑使用
猜你喜欢
- 2024-10-17 Uber如何使用ClickHouse建立日志分析平台?
- 2024-10-17 ClickHouse内核分析-MergeTree的存储结构和查询加速
- 2024-10-17 clickhouse ----入门(clickhouse-server)
- 2024-10-17 ClickHouse 查询优化(clickhouse join优化)
- 2024-10-17 clickhouse的技术文档--后面有安装文档
- 2024-10-17 使用Canal实现ClickHouse实时同步MySQL数据
- 2024-10-17 性能提高15倍!只是把MySQL换成了ClickHouse
- 2024-10-17 大数据ClickHouse进阶(十八):数据字典类型
- 2024-10-17 Clickhouse单机部署(clickhouse django)
- 2024-10-17 Clickhouse系列-第二节-基本原理(clickhouse ui)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)