监控
ClickHouse 运行时会将一些个自身的运行状态记录到众多系统表中( system.*)。所以我们对于 CH 自身的一些运行指标的监控数据,也主要来自这些系统表。
但是直接查询这些系统表会有一些不足之处:
- 这种方式太过底层,不够直观,我们还需要在此之上实现可视化展示;
- 系统表只记录了 CH 自己的运行指标,有些时候我们需要外部系统的指标进行关联分析,例如 ZooKeeper、服务器 CPU、IO 等等。
现在 Prometheus + Grafana 的组合比较流行,安装简单易上手,可以集成很多框架,包括服务器的负载, 其中 Prometheus 负责收集各类系统的运行指标; Grafana 负责可视化的部分。
ClickHouse 从 v20.1.2.4 开始,内置了对接 Prometheus 的功能,配置的方式也很简单,可以将其作为 Prometheus 的 Endpoint 服务,从而自动的将 metrics 、 events 和asynchronous_metrics 三张系统的表的数据发送给 Prometheus。
select * from system.metrics;
select * from system.events;
select * from system.asynchronous_metrics;
具体的监控配置可以见 链接:https://pan.baidu.com/s/1KdVZ9h-h5x-HjzBLsadaXA 提取码:tffo
备份
ClickHouse 允许使用 ALTER TABLE ... FREEZE PARTITION ... 查询以创建表分区的本地副本。这是利用硬链接(hardlink)到 /var/lib/clickhouse/shadow/ 文件夹中实现的,所以它通常不会因为旧数据而占用额外的磁盘空间。 创建的文件副本不由 ClickHouse 服务器处理,所以不需要任何额外的外部系统就有一个简单的备份。防止硬件问题,最好将它们远程复制到另一个位置,然后删除本地副本。官方地址
创建备份路径
创建用于存放备份数据的目录 shadow,shadow只能相当于一个中转站。
mkdir -p /var/lib/clickhouse/shadow/
# 修改权限
chown clickhouse:clickhouse shadow
执行备份命令
在外部执行命令,冻结的表依然可以使用,不会导致无法使用的。
echo -n 'alter table 表名 freeze' | clickhouse-client
将备份数据保存到其他路径
#创建备份存储路径
mkdir -p /var/lib/clickhouse/backup/
#拷贝数据到备份路径
cp -r /var/lib/clickhouse/shadow/ /var/lib/clickhouse/backup/表名-时间
# 修改备份文件的所有权限
chown -R clickhouse:clickhouse backup/
#为下次备份准备,删除 shadow 下的数据
rm -rf /var/lib/clickhouse/shadow/*
恢复数据
可以把之前的表先删掉,然后重新建表
echo 'drop table 表名' | clickhouse-client
恢复
cp -rl /var/lib/clickhouse/backup/表名-时间/1/store/一串uuid/* data/default/表名/detached/
ClickHouse 使用文件系统硬链接来实现即时备份,而不会导致 ClickHouse 服务停机(或锁定)。这些硬链接可以进一步用于有效的备份存储。在支持硬链接的文件系统(例如本地文件系统或 NFS)上,将 cp 与 -l 标志一起使用(或将 rsync 与 –hard-links 和 –numeric-ids 标志一起使用)以避免复制数据。
执行 attach
# 整张表恢复
echo 'alter table 表名 attach' | clickhouse-client
# 按分区恢复
echo 'alter table 表名 attach partition 20200601' | clickhouse-client
使用 clickhouse-backup
上面的过程,我们可以使用 Clickhouse 的备份工具 clickhouse-backup 帮我们自动化实现。工具地址
# 下载
wget https://github.com/AlexAkulov/clickhouse-backup/releases/download/v1.2.1/clickhouse-backup-1.2.1-1.x86_64.rpm
# 安装
rpm -ivh clickhouse-backup-1.0.0-1.x86_64.rpm
# 查看命令
clickhouse-backup help
# 显示要备份的表
clickhouse-backup tables
# 创建备份
clickhouse-backup create
# 备份到远程
clickhouse-backup upload
# 创建并备份到远程机器
clickhouse-backup create_remote
# 恢复
clickhouse-backup restore 备份的文件
# 查看现有的本地备份
clickhouse-backup list
备份存储在中/var/lib/clickhouse/backup/BACKUPNAME。备份名称默认为时间戳,但是可以选择使用–name 标志指定备份名称。备份包含两个目录:一个“metadata”目录,其中包含重新创建架构所需的 DDL SQL 语句;以及一个“shadow”目录,其中包含作为 ALTER TABLE ...FREEZE 操作结果的数据。
网友评论