ClickHouse安装
一、Docker安装
0. 不本地安装的体验平台:https://play.clickhouse.com/play?user=play;
1. docker-compose配置文件
version: "3" networks: rhxy-network: external: true services: clickhouse: image: clickhouse/clickhouse-server:23.12.2.59-alpine container_name: clickhouse hostname: clickhouse restart: on-failure ports: - "18123:8123" - "19000:9000" networks: - rhxy-network volumes: - /data/test/clickhouse/data:/var/lib/clickhouse - /data/test/clickhouse/log/:/var/log/clickhouse-server/ # - /data/test/clickhouse/etc/:/etc/clickhouse-server/ - /data/test/clickhouse/initdb/:/docker-entrypoint-initdb.d/ environment: TZ: Asia/Shanghai CLICKHOUSE_USER: root CLICKHOUSE_PASSWORD: 123456@rhxy ulimits: nofile: soft: 262144 hard: 262144
2. 端口介绍
A. 8123(HTTP)端口:用于通过HTTP协议与该数据库进行交互,支持RESTful API和HTTP查询语法,通常用在执行查询、获取数据和管理CK集群;
B. 9000(TCP)端口:用于通过TCP/IP协议与该数据库进行交互,使用自定义二进制协议进行通信,支持更高的并发性和高性能,通常用于大规模数据导入、导出和数据处理等高性能场景。
3. 核心文件
A. /etc/clickhouse-server:服务端的配置文件目录,包括全局配置config.xml和用户配置users.xml等,小技巧是这两个文件可以从容器内拷贝出来再修改映射;
config.d/docker_related_config.xml:放开logger的注释可将日志输入到标准流上,即docker logs 容器ID可以查看日志
B. /var/lib/clickhouse:默认的数据存储目录;
C. /var/log/clickhouse-server:默认保存日志的目录;
D. /docker-entrypoint-initdb.d:数据库初始化脚本目录。
4. 数据导入
A. 本地SQL文件导入:insert into rhxy_log from infile '/var/log/clickhouse-server/rhxy_log.sql' FORMAT MySQLDump,注意DDL语句将会跳过。
5. 其它
A. 修改密码:users.xml中;
B. clickhouse-client:命令使用。
二、SpringBoot整合
1. 报错
A. 报错一:clickhouse-jdbc连接数据库报错:LZ4 is not supported;
解决方式:引入lz4-java 1.8.0版本依赖
B. 错误一:ava.lang.NoClassDefFoundError:org/apache/hc/client5/http/config/ConnectionConfig
解决方式:升级httpclient5到5.2.3版本;
2. Maven整合
<dependency> <groupId>com.clickhouse</groupId> <artifactId>clickhouse-jdbc</artifactId> <version>0.5.0</version> </dependency>
三、Clickhouse配置
config.xml
1. 内存配置:show processlist——可查看每个查询的当前内存消耗
A. max_memory_usage:运行单个查询时使用的最大内存量,默认为无限制(0);
B. max_server_memory_usage:内存使用总量限制,默认为无限制(0);
C. max_server_memory_usage_to_ram_ratio:与 max_server_memory_usage 相同,但与物理内存成比例,零表示无限制;
2. 其他配置
path:数据存储路径;
users.xml:users标签下default为用户名,password为密码。