ClickHouse监控运维篇

监控全家桶Prometheus&Grafana

基本实现

1
2
3
CK从20.1.2.4开始,内置对接Prometheus功能
可以作为Prometheus的Endpoint服务
从而自动的将metrics,events和asynchronous_metrics三张系统的表的数据发送给Prometheus

Prometheus添加ck监控配置

1
2
3
- job_name: clickhouse-1
static_configs:
- targets: ['HOST:9363']

CK配置监控

1
2
3
4
5
6
7
8
9
10
11
vi clickhouse-server/config.xml
<prometheus>
<endpoint>/metrics</endpoint>
<port>9363</port>
<metrics>true</metrics>
<events>true</events>
<asynchronous_metrics>true</asynchronous_metrics>
<status_info>true</status_info>
</prometheus>

#剩下的就是从Grafana社区里找到合适的监控面板

备份与恢复

手动备份恢复

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#创建备份路径
sudo mkdir -p /var/lib/clickhouse/shadow/

执行备份命令
echo -n 'alter table t_order_mt freeze' | clickhouse-client

#将备份数据保存到其他路径
#创建备份存储路径
sudo mkdir -p /var/lib/clickhouse/backup/ #拷贝数据到备份路径
sudo cp -r /var/lib/clickhouse/shadow/
/var/lib/clickhouse/backup/my-backup-name
#为下次备份准备,删除 shadow 下的数据
sudo rm -rf /var/lib/clickhouse/shadow/*

#恢复数据
#模拟删除备份过的表
echo ' drop table t_order_mt ' | clickhouse-client
#重新创建表
cat events.sql | clickhouse-client
#将备份复制到 detached 目录
sudo cp -rl
backup/my-backup-name/1/store/cb1/cb176503-cd88-4ea8-8b17-6503cd888ea8/*
data/default/t_order_mt/detached/
#执行attach
echo 'alter table t_order_mt attach partition 20200601' | clickhouse-client
#查看数据
echo 'select count() from t_order_mt' | clickhouse-client

使用clickhouse-backup

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
工具地址:https://github.com/AlexAkulov/clickhouse-backup/

#安装
sudo rpm -ivh clickhouse-backup-1.0.0-1.x86_64.rpm

#配置
cat /etc/clickhouse-backup/config.yml

#创建备份
#查看可用命令
clickhouse-backup help
#显示要备份的表
clickhouse-backup tables
#创建备份
sudo clickhouse-backup create
#查看现有的本地备份
sudo clickhouse-backup list
备份存储在中/var/lib/clickhouse/backup/BACKUPNAME

#从备份恢复数据
#模拟删除备份过的表
echo 'drop table t_order_rmt' | clickhouse-client
#从备份还原
sudo clickhouse-backup restore 2021-07-25T23-14-50
--schema参数: 只还原表结构
--data参数: 只还原数据。
--table参数: 备份(或还原)特定表
也可以使用一个正则表达式,例如,针对特定的数据库:--table=dbname.*