unbutu安装clickhouse,并且远程连接,使用教程,原理

unbutu安装clickhouse,并且远程连接

一. 安装

1. 先更新 & 装依赖

bash 复制代码
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl gnupg
```.
##  2. 导入 ClickHouse 官方 GPG 密钥(Ubuntu 22.04 推荐做法)

```bash
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://packages.clickhouse.com/rpm/stable/repodata/repomd.xml.key \
| sudo gpg --dearmor -o /etc/apt/keyrings/clickhouse.gpg

3. 添加 ClickHouse 官方 APT 源

bash 复制代码
echo "deb [signed-by=/etc/apt/keyrings/clickhouse.gpg] https://packages.clickhouse.com/deb stable main" \
| sudo tee /etc/apt/sources.list.d/clickhouse.list

4. 安装

bash 复制代码
sudo apt update
sudo apt install -y clickhouse-server clickhouse-client

5. 启动 & 开机自启

bash 复制代码
sudo systemctl start clickhouse-server
sudo systemctl enable clickhouse-server
sudo systemctl status clickhouse-server

6. 本地连接测试

bash 复制代码
clickhouse-client

7. 设置 default 密码(重要,默认空密码)

bash 复制代码
sudo vim /etc/clickhouse-server/users.xml

找到

bash 复制代码
<password></password>

改成(随便设一个)

bash 复制代码
<password>123456</password>

重启生效:

bash 复制代码
sudo systemctl restart clickhouse-server

8. 开放远程连接(默认只监听本机)

bash 复制代码
sudo vim /etc/clickhouse-server/config.xml

找到

bash 复制代码
<!-- <listen_host>::</listen_host> -->

改成

复制代码
<listen_host>0.0.0.0</listen_host>

保存退出,重启:

bash 复制代码
sudo systemctl restart clickhouse-server

二. dbserver 远程连接

1. 下载驱动

在项目pom 文件添加maven 依赖,然后在maven 仓库之中找到坐标

bash 复制代码
  		<dependency>
            <groupId>cc.blynk.clickhouse</groupId>
            <artifactId>clickhouse4j</artifactId>
            <version>1.4.4</version>
        </dependency>

下面这个jar包就是驱动

2. 配置dbserver


#配置

click

cc.blynk.clickhouse.ClickHouseDriver

jdbc:clickhouse://{host}:{port}[/{database}]

8123

新建好后连接:


3. 使用

建表:

bash 复制代码
CREATE TABLE IF NOT EXISTS device_data (
    device_id   FixedString(32),
    time_stamp  DateTime,          
    preasure    Float64,          
    INDEX idx_device_id device_id TYPE minmax GRANULARITY 1
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(time_stamp)  
ORDER BY (device_id, time_stamp)   
SETTINGS index_granularity = 8192;

测试插入

bash 复制代码
INSERT INTO device_data (device_id, time_stamp, preasure)
VALUES ('dev001', '2025-05-14', 1.25), ('dev002', '2025-05-15', 2.33);

测试查询

bash 复制代码
SELECT * FROM device_data WHERE device_id = 'dev001';

三: 调优

  1. 硬件配置建议
bash 复制代码
• 确保服务器硬件足够强大,特别是磁盘 I/O、内存和 CPU。
• 使用 SSD 替代传统磁盘,以提高磁盘读写速度。
• 考虑使用 NVMe 存储,以更进一步提升 I/O 性能。
  1. 查询优化:
    • 使用合适的查询条件,避免全表扫描。
    • 避免在大表上进行复杂的 JOIN 操作,可以通过分布式计算将查询分解为多个小查询。
    • 合理利用 ClickHouse 的内置函数,以减少数据传输和处理的开销。
  2. 适当的集群规模:
    • 考虑数据量和查询负载,适当调整集群规模。
    • 在大规模集群中,使用 Distributed 引擎以实现分布式查询。
    数据导入优化:
    • 使用批量插入操作以提高数据导入速度。
    • 考虑使用异步数据导入,避免实时要求。
  3. 系统参数调优:
    • 调整 ClickHouse 的配置参数,例如缓存大小、线程数等,以适应不同的硬件和工作负载。
  4. 定期维护:
    • 定期进行表的优化操作,如 OPTIMIZE TABLE,以减小存储空间并提高查询性能。
    • 定期进行系统统计信息的收集,以帮助 ClickHouse 进行更好的查询计划优化。
  5. 监控和日志:
    • 设置监控和日志,及时发现性能问题并进行调整。
    • 根据日志进行故障排查和性能分析。
  6. 系统参数调优
bash 复制代码
<!-- config.xml -->

<!-- 设置单个查询可以使用的最大线程数 -->
<max_threads>16</max_threads>

<!-- 设置单个查询可以使用的最大内存量 -->
<max_memory_usage>10000000000</max_memory_usage>

<!-- 在进行 GROUP BY 操作之前,最大的数据大小,超过这个大小将执行外部 GROUP BY -->
<max_bytes_before_external_group_by>10000000000</max_bytes_before_external_group_by>

<!-- 在进行 ORDER BY 操作之前,最大的数据大小,超过这个大小将执行外部排序 -->
<max_bytes_before_external_sort>10000000000</max_bytes_before_external_sort>

<!-- MergeTree 引擎执行合并操作的线程数 -->
<merge_tree>
    <merge_threads>4</merge_threads>
</merge_tree>
<!-- MergeTree 引擎合并操作的块大小 -->
<merge_tree>
    <merge_max_block_size>10000000</merge_max_block_size>
</merge_tree>

<!-- 查询日志的最大长度 -->
<query_log>
    <max_length>1000000</max_length>
</query_log>
<!-- 记录查询执行过程中的日志级别 -->
<query_thread_log>
    <log_level>2</log_level>
</query_thread_log>

<!-- 启用分布式聚合的内存优化 -->
<settings>
    <distributed_aggregation_memory_efficient>1</distributed_aggregation_memory_efficient>
</settings>

<!-- 禁用压缩缓存 -->
<settings>
    <use_uncompressed_cache>1</use_uncompressed_cache>
</settings>

max_threads:指定单个查询可以使用的最大线程数。

• 调优建议:根据服务器的 CPU 核数和负载情况,适当设置 max_threads。在高负载情况下,可以适当降低。

max_memory_usage:指定单个查询可以使用的最大内存量。

• 调优建议:根据服务器的可用内存和工作负载,合理设置 max_memory_usage。避免设置得太大,以防止系统因为内存不足而变得缓慢。

max_bytes_before_external_group_by:指定在进行 GROUP BY 操作之前,最大的数据大小,超过这个大小将执行外部 GROUP BY。

• 调优建议:根据 GROUP BY 操作的频率和数据量,适当调整该参数。对于大数据量的 GROUP BY 操作,考虑增大该值。

max_bytes_before_external_sort:指定在进行 ORDER BY 操作之前,最大的数据大小,超过这个大小将执行外部排序。

• 调优建议:根据 ORDER BY 操作的频率和数据量,适当调整该参数。对于大数据量的 ORDER BY 操作,考虑增大该值。

merge_tree的merge_threads:指定 MergeTree 引擎执行合并操作的线程数。

• 调优建议:根据服务器的 CPU 核数和硬盘 I/O 的能力,适当调整 merge_threads。可以考虑增大该值以加速数据合并。

merge_tree的merge_max_block_size:指定 MergeTree 引擎合并操作的块大小。

• 调优建议:根据硬盘 I/O 和表分区的大小,适当调整 merge_max_block_size。通常情况下,增大该值有助于减小合并操作的开销。

query_log_max_length:指定查询日志的最大长度。

• 调优建议:根据日志记录需求,适当调整 query_log_max_length。对于需要详细查询日志的场景,可以增大该值。

query_thread_log_level:指定记录查询执行过程中的日志级别。

• 调优建议:在需要调试查询性能问题时,将 query_thread_log_level 设置为较低的日志级别,以获取更详细的查询执行信息。

distributed_aggregation_memory_efficient:启用分布式聚合的内存优化。

• 调优建议:对于涉及到分布式聚合操作的场景,启用该参数以优化内存使用。

use_uncompressed_cache:禁用压缩缓存。

• 调优建议:在硬盘 I/O 足够快的情况下,禁用压缩缓存可以提高查询性能。

相关推荐
StarRocks_labs2 天前
KaptureCX 大规模实时分析架构演进:基于 RisingWave 与 StarRocks 的最佳实践
starrocks·sql·clickhouse·ai赋能·kapture
l1t3 天前
DeepSeek总结的pg_clickhouse v0.3.0的新特性
clickhouse·postgresql
bzmK1DTbd3 天前
ClickHouse列式存储:海量数据分析利器
clickhouse·oracle·数据分析
不恋水的雨4 天前
docker安装clickhouse数据库容器
clickhouse·docker·容器
麦兜和小可的舅舅4 天前
ClickHouse Dist表的Replica选择逻辑深度解析-- Custom Key以及Sample的执行逻辑
c++·clickhouse·distribute·shard
布吉岛的石头4 天前
ClickHouse性能优化:OLAP数据库实战,让查询飞起来
数据库·clickhouse·性能优化
=蜗牛=9 天前
Docker 简单部署 ClickHouse 超详细图文步骤
clickhouse·docker·容器·部署·图文
狼与自由10 天前
clickhouse log引擎
clickhouse