侧边栏壁纸
博主头像
★街角晚灯★博主等级

博观而约取 厚积而薄发

  • 累计撰写 448 篇文章
  • 累计创建 183 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

ClickHouse数据同步

WinJay
2023-11-19 / 0 评论 / 0 点赞 / 10 阅读 / 6731 字 / 正在检测是否收录...
温馨提示:
文章发布较早,内容可能过时,阅读注意甄别。。。。

ClickHouse使用

官方文档 https://clickhouse.com/docs/zh

img

简述

CloudCanal 近期实现了 MySQL(RDS) 到 ClickHouse 实时同步的能力,功能包含全量数据迁移、增量数据迁移、结构迁移能力,以及附带的监控、告警、HA等能力(平台自带)。

ClickHouse 本身并不直接支持 Update 和 Delete 能力,但是他自带的 MergeTree 系列表中 CollapsingMergeTreeVersionedCollapsingMergeTree 可变相实现实时增量的目的,并且性能完全够用,能够比较轻松达到 1k RPS 以上的能力。

启动服务

# 准备好本地四个目录:ClickHouseConfiguration  ClickHouseData  ClickHouseInitDB  ClickHouseLogs

docker run -d -p 8123:8123 -p 9000:9000 -p 9004:9004 \
    -v `pwd`/ClickHouseData:/var/lib/clickhouse/ \
    -v `pwd`/ClickHouseConfiguration:/etc/clickhouse-server/ \
    -v $(realpath ./ClickHouseLogs):/var/log/clickhouse-server/ \
    -v $(realpath ./ClickHouseInitDB):/docker-entrypoint-initdb.d/ \
    --cap-add=SYS_NICE --cap-add=NET_ADMIN --cap-add=IPC_LOCK \
    --name ClickHouse-Server --ulimit nofile=262144:262144 \
    clickhouse/clickhouse-server:23.2.4.12

image-20230330112630523

启动客户端

docker exec -it ClickHouse-Server /bin/bash
clickhouse-client
ClickHouse client version 23.2.4.12 (official build).
Connecting to localhost:9000 as user default.
Password for user (default): # 输入default用户的密码
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 23.2.4 revision 54461.

Warnings:
 * Linux transparent hugepages are set to "always". Check /sys/kernel/mm/transparent_hugepage/enabled

a1ab06ae0541 :) show databases;

SHOW DATABASES

Query id: daf5ffd2-7714-4ec6-ac68-9f8a1eb003be

┌─name───────────────┐
│ INFORMATION_SCHEMA │
│ default            │
│ information_schema │
│ lit_info           │
│ lit_info_oa        │
│ system             │
│ test_base          │
└────────────────────┘

7 rows in set. Elapsed: 0.002 sec.

image-20230330112747275

配置修改

# 配置数据库引擎
SET allow_experimental_database_materialized_mysql=1

添加配置文件

  • 新建配置文件:config.d/docker_related_config.xml以允许键值为空。默认值无此配置即值为0,是禁用状态。
<clickhouse>
     <!-- Listen wildcard address to allow accepting connections from other containers and host network. -->
    <listen_host>::</listen_host>
    <listen_host>0.0.0.0</listen_host>
    <listen_try>1</listen_try>

    <!--
    <logger>
        <console>1</console>
    </logger>
    -->
</clickhouse>

image-20230330113156708

创建来源于库

CREATE DATABASE lit_info ENGINE = MaterializeMySQL(
  '10.17.0.21:3306', 'lit_inf_sys_db', 'root', 'lit-Info-Dev'
)

# 10.17.0.21:3306 - MySQL 地址和端口
# lit_inf_sys_db - MySQL 库的名称
# root - MySQL 同步账户
# lit-Info-Dev - MySQL 同步账户的密码

结构迁移

目前到 ClickHouse 的结构迁移中,默认选择 ReplacingMergeTree 作为表引擎,源主键作为 sortKey (无主键表则是 tuple),如下示例:

 CREATE TABLE console.worker_stats
(
    `id` Int64,
    `gmt_create` DateTime,
    `worker_id` Int64,
    `cpu_stat` String,
    `mem_stat` String,
    `disk_stat` String
)
ENGINE = ReplacingMergeTree()
ORDER BY id
SETTINGS index_granularity = 8192

创建来源于表

CREATE TABLE t_manhour ENGINE = MergeTree PARTITION BY toYYYYMM ( work_date ) 
ORDER BY
	work_date AS SELECT
	* 
FROM
	mysql ( '10.17.0.21:3306', 'lit_inf_sys_db', 'man_hour_info', 'root', 'lit-Info-Dev' );
CREATE TABLE act_hi_detail
ENGINE = MergeTree
PARTITION BY toYYYYMM(TIME_)
ORDER BY TIME_ AS
SELECT *
FROM mysql('10.17.0.21:3306', 'lit_inf_sys_db', 'act_hi_detail', 'root', 'lit-Info-Dev');

image-20230330151049070

验证数据

  • 让我们通过查看插入了多少行来验证它是否有效:
SELECT count()
FROM act_hi_detail

image-20230330151117879

  • 在执行此查询时,数据集有 27,450,499 行。让我们看看 test_base 中表的大小是多少:
SELECT formatReadableSize(total_bytes)
FROM system.tables
WHERE name = 'act_hi_detail'

image-20230330151308804

  • 请注意,表的大小仅为 24 MiB!而MySQL中的大小为341.9MB

image-20230330151354715

创建表

与大多数数据库管理系统一样,ClickHouse在逻辑上将表分组为数据库。包含一个default数据库,但我们将创建一个新的数据库tutorial:

clickhouse-client --query "CREATE DATABASE IF NOT EXISTS tutorial"

与创建数据库相比,创建表的语法要复杂得多(请参阅参考资料. 一般CREATE TABLE声明必须指定三个关键的事情:

  1. 要创建的表的名称。
  2. 表结构,例如:列名和对应的数据类型
  3. 表引擎及其设置,这决定了对此表的查询操作是如何在物理层面执行的所有细节。

实时同步

参考:https://blog.csdn.net/qq_44273429/article/details/122158913

https://www.clougence.com/

https://www.clougence.com/cloudcanal

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区