ClickHouse 分布式部署、分布式表创建及数据迁移指南

文章目录

    • [部署 ClickHouse 集群](#部署 ClickHouse 集群)
      • [1.1 环境准备](#1.1 环境准备)
      • [1.2 安装 ClickHouse](#1.2 安装 ClickHouse)
      • [1.3 配置集群](#1.3 配置集群)
    • 创建分布式表
      • [2.1 创建本地表](#2.1 创建本地表)
      • [2.2 创建分布式表](#2.2 创建分布式表)
      • [2.3 删除分布式表](#2.3 删除分布式表)
    • 测试分布式表
      • [3.1 插入测试数据。](#3.1 插入测试数据。)
    • 配置和管理
      • [4.1 配置监控](#4.1 配置监控)
      • [4.2 数据备份](#4.2 数据备份)
    • 数据迁移
      • [5.1 导出](#5.1 导出)
      • [5.2 导入](#5.2 导入)

部署 ClickHouse 集群

Quantum Insights 的部署将基于一个高可用的分布式 ClickHouse 集群,以实现对大规模数据的高效处理和查询。

1.1 环境准备

  • 准备至少三台服务器,用于 ClickHouse 的分布式部署。
  • 每台服务器的系统要求:
    • 操作系统: CentOS 7
    • 内存:16GB 以上
    • CPU:8 核 以上
    • 磁盘:SSD 500GB 以上
    • 网络:千兆网络

1.2 安装 ClickHouse

在每台服务器上执行以下步骤进行 ClickHouse 的安装。

shell 复制代码
> yum install -y yum-utils
> yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo
> yum install -y clickhouse-server clickhouse-client

1.3 配置集群

在每台服务器的配置文件 /etc/clickhouse-server/config.d/metrika.xml 中添加集群配置。假设有三台服务器,IP 分别为 192.168.1.1, 192.168.1.2, 192.168.1.3

xml 复制代码
<yandex>
    <remote_servers>
        <ycloud_clickhouse_cluster>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>192.168.1.1</host>
                    <port>9920</port>
                    <user>default</user>
                    <password>GStrain_123</password>
                </replica>
            </shard>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>192.168.1.2</host>
                    <port>9920</port>
                    <user>default</user>
                    <password>GStrain_123</password>
                </replica>
            </shard>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>192.168.1.3</host>
                    <port>9920</port>
                    <user>default</user>
                    <password>GStrain_123</password>
                </replica>
            </shard>
        </ycloud_clickhouse_cluster>
    </remote_servers>
   
    <zookeeper>
        <node index="1">
            <host>192.168.1.10</host>
            <port>2284</port>
        </node>
        <node index="2">
            <host>192.168.1.11</host>
            <port>2284</port>
        </node>
        <node index="3">
            <host>192.168.1.12</host>
            <port>2284</port>
        </node>
    </zookeeper>
    <macros>
        <shard>01</shard>   ###  根据节点填写
        <replica>192.168.1.1</replica>  ###  根据节点填写
    </macros>
    <networks>
        <ip>::/0</ip>
    </networks>
    <clickhouse_compression>
        <case>
            <min_part_size>10000000000</min_part_size>
            <max_partitions_per_insert_block>0</max_partitions_per_insert_block>
            <min_part_size_ratio>0.01</min_part_size_ratio>
            <method>lz4</method>
        </case>
    </clickhouse_compression>
</yandex>

⚡️: zk 自行创建 ,macros根据节点填写,port部分我是调整过的根据实际情况填写

重启 ClickHouse 服务器以应用新的配置。

shell 复制代码
> systemctl restart clickhouse-server

创建分布式表

2.1 创建本地表

在每台服务器上创建本地表 gatewaySvrAls

sql 复制代码
CREATE TABLE default.gatewaySvrAls ON CLUSTER ycloud_clickhouse_cluster
(
logtime DateTime,
method String,
orderId String,
transactionid String,
serialnumber String,
code Int32,
reserveNo String
)
ENGINE =  ReplicatedMergeTree('/clickhouse/tables/{shard}/default/gatewaySvrAls', '{replica}')
PARTITION BY toYYYYMMDD(logtime)
PRIMARY KEY (logtime,
 orderId,
 serialnumber)
ORDER BY (logtime,
 orderId,
 serialnumber)
SETTINGS index_granularity = 8192;

2.2 创建分布式表

在每台服务器上创建分布式表 gatewaySvrAls_all,以对本地表进行分布式查询。

sql 复制代码
CREATE TABLE default.gatewaySvrAls_all ON CLUSTER ycloud_clickhouse_cluster AS default.gatewaySvrAls
ENGINE = Distributed(ycloud_clickhouse_cluster, default, gatewaySvrAls, rand())

2.3 删除分布式表

在集群任意节点上执行

sql 复制代码
DROP TABLE default.gatewaySvrAls ON CLUSTER ycloud_clickhouse_cluster;
DROP TABLE default.gatewaySvrAls_all ON CLUSTER ycloud_clickhouse_cluster;

测试分布式表

3.1 插入测试数据。

sql 复制代码
INSERT INTO gatewaySvrAls VALUES ('2024-05-15 14:19:24', 'ycloud_1', '123456', 'YCLOUD123456', '', '100', '');
INSERT INTO gatewaySvrAls VALUES ('2024-05-15 14:19:25', 'ycloud_2', '123456', 'YCLOUD123456', '', '100', '');

在分布式表上执行查询,以验证集群配置和分布式表的工作情况。

复制代码
SELECT * FROM default.gatewaySvrAls;

配置和管理

为了确保 Quantum Insights 的高可用性和稳定性,可以配置监控和报警系统,如 Prometheus 和 Grafana,并定期备份数据。

4.1 配置监控

  • 安装 Prometheus 并配置 ClickHouse Exporter。
  • 使用 Grafana 创建可视化面板监控集群健康状况。

4.2 数据备份

定期备份 ClickHouse 数据以防数据丢失。

sh 复制代码
# 在每台服务器上定期执行备份
clickhouse-backup create backup_name
clickhouse-backup upload backup_name

数据迁移

数据迁移需要确保数据从旧系统到新系统的完整性和一致性,本次使用的官方客户端进行数据迁移

5.1 导出

sql 复制代码
clickhouse-client  -h 192.168.1.1 --port 9920  -u default --password ycloud_123 --query="SELECT * FROM default.gatewaySvrAls" --format=CSV > output.csv

5.2 导入

sql 复制代码
clickhouse-client --host 192.168.1.1--port 9920 --user default --password ycloud_123 --query="INSERT INTO default.gatewaySvrAls FORMAT CSV" < output.csv
相关推荐
重生之绝世牛码1 天前
Linux软件安装 —— ClickHouse单节点安装(rpm安装、tar安装两种安装方式)
大数据·linux·运维·数据库·clickhouse·软件安装·clickhouse单节点
麦兜和小可的舅舅1 天前
Spark to ClickHouse由于DNS问题导致Stage重试的Task竞态分析和问题解决过程
clickhouse·spark
王莽v21 天前
序列并行-负载均衡
人工智能·分布式
optimistic_chen1 天前
【Redis系列】分布式锁
linux·数据库·redis·分布式·缓存
王莽v21 天前
FlashAttention 学习笔记:从公式到分布式
人工智能·分布式
王莽v21 天前
LLM 分布式推理:切分、通信与优化
人工智能·分布式
SJLoveIT1 天前
【深度复盘】Redis 分布式锁:从 SETNX 到 Redisson 看门狗的架构权衡
redis·分布式·架构
【赫兹威客】浩哥1 天前
【赫兹威客】完全分布式Flink测试教程
大数据·分布式·flink
予枫的编程笔记1 天前
【Redis实战进阶篇1】Redis 分布式锁:从手写实现到 Redisson 最佳实践
redis·分布式·wpf
重生之绝世牛码1 天前
Linux软件安装 —— ClickHouse集群安装(集成Zookeeper)+ chproxy负载均衡
大数据·linux·数据库·clickhouse·软件安装·clickhouse集群安装·clickhouse负载均衡