暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

clickhouse备份与监控

骚明的大数据之旅 2021-10-25
511

注意:在冻结、拷贝的过程当中,特别是到创建表的depatched目录下面一定要是clickhouse所属权限,否则的话会出现问题

1、创建表和导入数据

CREATE TABLE clickhouse.user_local
(
`id` Int32,
`name` String
)
ENGINE = MergeTree
PARTITION BY id
PRIMARY KEY id
ORDER BY id
SETTINGS index_granularity = 8192;
INSERT INTO user_local VALUES(1,'tom'),(2,'jack');

drwx------. 14 clickhouse clickhouse 228 10月 24 14:44 clickhouse

记住clickhouse的所属主都是clickhouse,所以这个的话最好是改成这个一样的

2、 创建备份路径  

sudo mkdir -p /var/lib/clickhouse/shadow/
sudo chown -R clickhouse:clickhouse /var/lib/clickhouse/shadow/

如果目录存在,先清空目录下的数据  

3、执行备份命令

sudo echo -n 'alter table clickhouse.user_local freeze' | clickhouse-client

记住这个的话最好是把数据库的名称也给加上,冻结之后的数据,也能使用的

查看这个路径多了一点东西,可以进行查看一下这些文件的内容和数据

一定要加上数据冻结,否则的话不会出现这样的效果的

4、将备份数据保存到其他路径  

#创建备份存储路径
sudo mkdir -p /var/lib/clickhouse/backup/

sudo chown -R clickhouse:clickhouse /var/lib/clickhouse/backup/

#拷贝数据到备份路径
#记住这个只能拷贝的是分区路径
sudo cp -r /var/lib/clickhouse/shadow/1/store/a57/a57850c0-158b-49e4-a578-50c0158b89e4/* /var/lib/clickhouse/backup

#为下次备份准备,删除 shadow 下的数据
sudo rm -rf /var/lib/clickhouse/shadow/*

查看效果图,记住,这个一定要把那个冻结的这个目录的话一定要清空掉,方便下一次的进行备份操作

5、将clickhouse原表的数据给删掉

 drop table clickhouse.user_local;

6、恢复数据

sudo cp -rl /var/lib/clickhouse/backup/my-backup-name/1/store/16a/16a49228-cb41-4b57-96a4-9228cb417b57/* /var/lib/clickhouse/data/clickhouse/user_local/detached
sudo chown -R clickhouse:clickhouse detached/

ClickHouse 使用文件系统硬链接来实现即时备份,而不会导致 ClickHouse 服务停机(或 锁定)。这些硬链接可以进一步用于有效的备份存储。在支持硬链接的文件系统(例如本地 文件系统或 NFS)上,将 cp 与-l 标志一起使用(或将 rsync 与–hard-links 和–numeric-ids 标志 一起使用)以避免复制数据。 

注意:仅拷贝分区目录,注意目录所属的用户要是 clickhouse  

echo 'alter table clickhouse.user_local attach partition 1' | clickhouse-client

记住,这个备份这个东西不是很难,主要是一定要注意归属这个东西,否则的话会出现问题

上面的话是一种备份方式,下面是另外一种备份方式

7、 clickhouse-backup

官网:https://github.com/AlexAkulov/clickhouse-backup

这个是官网的下载地址

clickhouse-backup-1.0.0-1.x86_64.rpm

sudo rpm -ivh clickhouse-backup-1.0.0-1.x86_64.rpm

查看安装成功

配置文件

[root@clickhouse01 clickhouse-backup]# ll
总用量 4
-rw-r--r--. 1 root root 1682 6月 17 00:49 config.yml.example
[root@clickhouse01 clickhouse-backup]#
general:
remote_storage: s3
max_file_size: 1099511627776
disable_progress_bar: false
backups_to_keep_local: 0
backups_to_keep_remote: 0
log_level: info
allow_empty_backups: false
clickhouse:
username: default
password: ""
host: localhost
port: 9000
disk_mapping: {}
skip_tables:
- system.*
timeout: 5m
freeze_by_part: false
secure: false
skip_verify: false
sync_replicated_tables: true
skip_sync_replica_timeouts: true
log_sql_queries: false
s3:
access_key: ""
secret_key: ""
bucket: ""
endpoint: ""
region: us-east-1
acl: private
force_path_style: false
path: ""
disable_ssl: false
part_size: 536870912
compression_level: 1
compression_format: tar
sse: ""
disable_cert_verification: false
storage_class: STANDARD
gcs:
credentials_file: ""
credentials_json: ""
bucket: ""
path: ""
compression_level: 1
compression_format: tar
cos:
url: ""
timeout: 2m
secret_id: ""
secret_key: ""
path: ""
compression_format: tar
compression_level: 1
api:
listen: localhost:7171
enable_metrics: true
enable_pprof: false
username: ""
password: ""
secure: false
certificate_file: ""
private_key_file: ""
create_integration_tables: false
ftp:
address: ""
timeout: 2m
username: ""
password: ""
tls: false
path: ""
compression_format: tar
compression_level: 1
sftp:
address: ""
port: 22
username: ""
password: ""
key: ""
path: ""
compression_format: tar
compression_level: 1
azblob:
endpoint_suffix: core.windows.net
account_name: ""
account_key: ""
sas: ""
container: ""
path: ""
compression_level: 1
compression_format: tar
sse_key: ""

8、clickhouse-backup常用命令

(1)查看可用命令
clickhouse-backup help

(2)显示要备份的表
clickhouse-backup tables

(3)创建备份
sudo clickhouse-backup create

(4)查看现有的本地备份
sudo clickhouse-backup list

备份存储在中/var/lib/clickhouse/backup/BACKUPNAME。备份名称默认为时间戳,但是 可以选择使用–name 标志指定备份名称。备份包含两个目录:一个“metadata”目录,其中包 含重新创建架构所需的 DDL SQL 语句;以及一个“shadow”目录,其中包含作为 ALTER TABLE ... FREEZE 操作结果的数据。 

记住,在执行这个之前把上面创建的冻结命令的那个目录和备份的那个目录给删掉吧

rm -rf /var/lib/clickhouse/shadow
rm -rf /var/lib/clickhouse/backup

这个命令就方便多了,可以去查看shadow和backup这个目录下面的数据

这个里面更加智能的就是数据里面有备份,包括如何去创建表和数据库等等,这些里面都是有的

9、恢复数据

记住把这个数据表给删掉就好了

(1)模拟删除备份过的表
echo 'drop table clickhouse.user_local' | clickhouse-client

(2)从备份还原
sudo clickhouse-backup restore 2021-07-25T23-14-50

经过测试,测试失败,所以还是使用手动来进行恢复

10、这个是监控的页面


文章转载自骚明的大数据之旅,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论