OLAP系列之分析型数据库clickhouse备份方式(五)
一、常见备份方式
1.1 备份方式
备份方式 | 特点 |
物理文件备份 | 对物理文件进行拷贝,备份期间禁止数据写入 |
dump数据导入导出 | 备份方式灵活,但备份速度慢 |
快照表备份 | 制作_bak表进行备份 |
FREEZE备份 | 表(分区表、非分区表)分区备份,可通过attach进行装载恢复 |
FETCH备份 | ReplicaMergeTree引擎的分区表分区备份,可通过attach进行装载恢复 |
元数据备份 | 建表、建库语句备份 |
1.2 恢复方式:
恢复方式 | 特点 |
attach | 通过对表分区的备份文件进行装载恢复,需要将备份文件放在对应的detached目录下 |
二、冷备
通过对物理文件的拷贝也可达到备份的效果,但是需要注意的是通过拷贝物理文件进行备份期间,要避免数据写入。 1.物理文件的备份主要分为两部分:
(1) 表数据文件备份,${datadir}/data下可对某个数据库、某张表、某个分区文件进行备份
(2) 元数据备份,${datadir}/metadata下可对某个数据库、某张表的建表语句进行备份
2. 备份数据库文件
复制clickhouse完整的数据目录,数据的目录路径是config.xml的path属性的值;
恢复也很简单,只需要将数据目录替换为备份的数据目录即可.
三、热备
:) show databases; ┌─name───────────────┐
│ INFORMATION_SCHEMA │
│ default │
│ information_schema │
│ system │
│ test_log │
└────────────────────┘
:) use test_log;
:) show tables; ┌─name───────┐
│ test_all │
│ test_local │
│ user_all │
└────────────┘
:) select * from test_all;
# 192.168.12.91服务器数据:test_local
┌─id─┬─name─────┐
│ 1 │ zhangsan │
│ 2 │ lisi │
│ 7 │ yw │
│ 8 │ xc │
└────┴──────────┘
# 192.168.12.90服务器数据:test_local
┌─id─┬─name───┐
│ 3 │ wangm │
│ 4 │ lijing │
│ 9 │ cx │
│ 10 │ aa │
│ 13 │ kkkk │
└────┴────────┘
# 192.168.12.88服务器数据:test_local
┌─id─┬─name──────┐
│ 5 │ zhangquan │
│ 6 │ lihua │
│ 11 │ bb │
│ 12 │ acca │
└────┴───────────┘
3.1 数据导入导出
3.1.1 通过查询语句将指定数据导出到tsv文件进行备份,备份数据比较灵活,并且可通过客户端工具进行数据导入恢复。
导出文件备份
# 导出带表头的txt文件
clickhouse-client -h 127.0.0.1 --database="test01" -u default --password "123456" --format_csv_delimiter="|" --query="select * from pet_barrages FORMAT CSVWithNames" >local.txt # 导出不带表头的txt文件
clickhouse-client -h 127.0.0.1 --database="test01" -u default --password "123456" --format_csv_delimiter='|' --query="select * from student FORMAT CSV" > /root/local.txt # 导出带表头的csv文件 带表头即有标题的:name、age
clickhouse-client --password "123456" -d test01 -q "select * from local FORMAT CSVWithNames" --format_csv_delimiter='|' > /data/local.csv # 导出不带表头的csv文件
clickhouse-client --password "123456" -d test01 -q "select * from local FORMAT CSV" --format_csv_delimiter='|' > /data/local.csv
导入文件:
# 导入带表头的txt文件
clickhouse-client -h 127.0.0.1 --database="test01" -u default --password "123456" --format_csv_delimiter='|' --query="insert into local FORMAT CSVWithNames" < local.txt # 导入不表头的txt文件
clickhouse-client --password 123456 -d test01 -q " insert into local FORMAT CSV" --format_csv_delimiter='|' < local.txt # 导入带表头的csv文件
clickhouse-client --password 123456 -d default -q " insert into local FORMAT CSVWithNames" --format_csv_delimiter='|' < /data/local.csv # 导入不表头的csv文件
clickhouse-client --password 123456 -d default -q " insert into local FORMAT CSV" --format_csv_delimiter='|' < /data/local.csv
四、备份工具clickhouse-backup
下载地址:https://github.com/Altinity/clickhouse-backup/releases
它有以下特点:
1. 可以轻松创建和恢复所有或特定表的备份
2. 在文件系统上高效存储多个备份
3. 通过流压缩上传和下载
4. 支持增量备份在远程存储上
5. 与AWS、Azure、GCS、腾讯COS、FTP兼容
tar -xzvf clickhouse-backup-linux-amd64.tar.gz mv build/linux/amd64/clickhouse-backup /usr/bin/
mkdir /etc/clickhouse-backup
chown -R clickhouse:clickhouse /etc/clickhouse-backup
配置文件配置:
# 查看默认配置文件命令
clickhouse-backup default-config vim /etc/clickhouse-backup/config.xml
general:
remote_storage: none # 默认为none,如果通过sftp上传到远程服务器,需要这个参数这只为sftp
disable_progress_bar: false
backups_to_keep_local: 7 # 本地备份的个数,大于7的自动删除旧的备份,默认为0,不删除备份
backups_to_keep_remote: 7 # 远程备份个数
log_level: info
allow_empty_backups: false
clickhouse:
username: default
password: "123456"
host: 192.168.12.91
port: 9000
data_path: "/data/clickhouse/clickhouse/" # clickhouse数据目录
skip_tables: # 不需要备份的库
- system.*
- default.*
- INFORMATION_SCHEMA.*
- information_schema.*
timeout: 5m
freeze_by_part: false
# 备份命令
[root@ backup]# clickhouse-backup create my_backup --config /etc/clickhouse-backup/config.xml
2023/07/24 18:00:32.259794 info clickhouse connection prepared: tcp://192.168.12.91:9000 run ping logger=clickhouse
2023/07/24 18:00:32.260590 info clickhouse connection open: tcp://192.168.12.91:9000 logger=clickhouse
2023/07/24 18:00:32.260619 info SELECT metadata_path FROM system.tables WHERE database = 'system' AND metadata_path!='' LIMIT 1; logger=clickhouse
2023/07/24 18:00:32.263036 info SELECT name, engine FROM system.databases WHERE name NOT IN ('system','INFORMATION_SCHEMA','information_schema','_temporary_and_external_tables','default') logger=clickhouse
2023/07/24 18:00:32.264230 info SHOW CREATE DATABASE `pet_battle_dev` logger=clickhouse
2023/07/24 18:00:32.264811 info SHOW CREATE DATABASE `pet_battle_test` logger=clickhouse
2023/07/24 18:00:32.265394 info SHOW CREATE DATABASE `test02` logger=clickhouse
2023/07/24 18:00:32.266068 info SELECT name, count(*) as is_present FROM system.settings WHERE name IN (?, ?) GROUP BY name with args [show_table_uuid_in_table_create_query_if_not_nil display_secrets_in_show_and_select] logger=clickhouse
2023/07/24 18:00:32.267830 info SELECT name FROM system.databases WHERE engine IN ('MySQL','PostgreSQL','MaterializedPostgreSQL') logger=clickhouse
2023/07/24 18:00:32.271753 info SELECT countIf(name='data_path') is_data_path_present, countIf(name='data_paths') is_data_paths_present, countIf(name='uuid') is_uuid_present, countIf(name='create_table_query') is_create_table_query_present, countIf(name='total_bytes') is_total_bytes_present FROM system.columns WHERE database='system' AND table='tables' logger=clickhouse
2023/07/24 18:00:32.273981 info SELECT database, name, engine , data_paths , uuid , create_table_query , coalesce(total_bytes, 0) AS total_bytes FROM system.tables WHERE is_temporary = 0 ORDER BY total_bytes DESC SETTINGS show_table_uuid_in_table_create_query_if_not_nil=1 logger=clickhouse
2023/07/24 18:00:32.289898 info SELECT metadata_path FROM system.tables WHERE database = 'system' AND metadata_path!='' LIMIT 1; logger=clickhouse
2023/07/24 18:00:32.291693 info SELECT sum(bytes_on_disk) as size FROM system.parts WHERE active AND database='pet_battle_dev' AND table='test_tbl' GROUP BY database, table logger=clickhouse
2023/07/24 18:00:32.293367 info SELECT count() as cnt FROM system.columns WHERE database='system' AND table='functions' AND name='create_query' SETTINGS empty_result_for_aggregation_by_empty_set=0 logger=clickhouse
2023/07/24 18:00:32.294880 info SELECT name, create_query FROM system.functions WHERE create_query!='' logger=clickhouse
2023/07/24 18:00:32.296301 info SELECT value FROM `system`.`build_options` where name='VERSION_INTEGER' logger=clickhouse
2023/07/24 18:00:32.297124 info SELECT count() is_disk_type_present FROM system.columns WHERE database='system' AND table='disks' AND name='type' logger=clickhouse
2023/07/24 18:00:32.298539 info SELECT path, any(name) AS name, any(type) AS type FROM system.disks GROUP BY path logger=clickhouse
2023/07/24 18:00:32.299913 info SELECT count() is_parts_column_present FROM system.tables WHERE database='system' AND name='parts_columns' logger=clickhouse
2023/07/24 18:00:32.301299 info SELECT column, groupUniqArray(type) AS uniq_types FROM system.parts_columns WHERE active AND database=? AND table=? GROUP BY column HAVING length(uniq_types) > 1 with args [test02 test_local] logger=clickhouse
2023/07/24 18:00:32.303138 info ALTER TABLE `test02`.`test_local` FREEZE WITH NAME '2aac621edb25476096bd0b6abd3d0d51'; logger=clickhouse
2023/07/24 18:00:32.306048 info ALTER TABLE `test02`.`test_local` UNFREEZE WITH NAME '2aac621edb25476096bd0b6abd3d0d51' logger=clickhouse
2023/07/24 18:00:32.306607 info SELECT mutation_id, command FROM system.mutations WHERE is_done=0 AND database=? AND table=? with args [test02 test_local] logger=clickhouse
2023/07/24 18:00:32.308310 info done backup=my_backup logger=backuper operation=create table=test02.test_local
2023/07/24 18:00:32.308351 info SELECT column, groupUniqArray(type) AS uniq_types FROM system.parts_columns WHERE active AND database=? AND table=? GROUP BY column HAVING length(uniq_types) > 1 with args [pet_battle_dev test_tbl] logger=clickhouse
2023/07/24 18:00:32.310104 info ALTER TABLE `pet_battle_dev`.`test_tbl` FREEZE WITH NAME '3a4112e17f994030b5c1b929fcbc3398'; logger=clickhouse
2023/07/24 18:00:32.311419 info ALTER TABLE `pet_battle_dev`.`test_tbl` UNFREEZE WITH NAME '3a4112e17f994030b5c1b929fcbc3398' logger=clickhouse
2023/07/24 18:00:32.311824 info SELECT mutation_id, command FROM system.mutations WHERE is_done=0 AND database=? AND table=? with args [pet_battle_dev test_tbl] logger=clickhouse
2023/07/24 18:00:32.313312 info done backup=my_backup logger=backuper operation=create table=pet_battle_dev.test_tbl
2023/07/24 18:00:32.313472 warn supports only schema backup backup=my_backup engine=Distributed logger=backuper operation=create table=test02.test_all
2023/07/24 18:00:32.313500 info SELECT mutation_id, command FROM system.mutations WHERE is_done=0 AND database=? AND table=? with args [test02 test_all] logger=clickhouse
2023/07/24 18:00:32.314993 info done backup=my_backup logger=backuper operation=create table=test02.test_all
2023/07/24 18:00:32.315022 info SELECT value FROM `system`.`build_options` where name='VERSION_DESCRIBE' logger=clickhouse
2023/07/24 18:00:32.316068 info done backup=my_backup duration=56ms logger=backuper operation=create # create 指定备份名称,如果不指定备份名称,默认格式为:2023-07-24T10-21-13 伦敦时间
clickhouse-backup create --config /etc/clickhouse-backup/config.xml # 默认备份文件备份到数据目录下的backup目录下
/data/clickhouse/clickhouse/backup/ # 查看已生成的备份
clickhouse-backup --config /etc/clickhouse-backup/config.xml list
# 删除已备份的数据库
clickhouse-backup delete local/remote my_backup --config /etc/clickhouse-backup/config.xml
local/remote 选择删除本地服务器还是删除远程服务求的参数,remote远程服务器上备份 # 恢复数据库
clikhouse restore my_backup
# 查看可以备份的表
clickhouse-backup --config config.xml list
# 定时备份脚本 #!/bin/bash
BACKUP_NAME="backup_$(date +%Y%m%d%H)" /usr/bin/clickhouse-backup create $BACKUP_NAME --config /etc/clickhouse-backup/config.xml
OLAP系列之分析型数据库clickhouse备份方式(五)的更多相关文章
- 什么是分析型数据库PostgreSQL版
分析型数据库PostgreSQL版(原HybridDB for PostgreSQL)为您提供简单.快速.经济高效的 PB 级云端数据仓库解决方案.分析型数据库PostgreSQL版 兼容 Green ...
- 悠星网络基于阿里云分析型数据库PostgreSQL版的数据实践
说到“大数据”,当下这个词很火,各行各业涉及到数据的,目前都在提大数据,提数据仓库,数据挖掘或者机器学习,但同时另外一个热门的名词也很火,那就是“云”.越来越多的企业都在搭建属于自己的云平台,也有一些 ...
- AnalyticDB - 分析型数据库
https://yq.aliyun.com/teams/31?spm=5176.7937365.1120968.ee1.78505692UL9DhG 分析型数据库(AnalyticDB)是一种高并发低 ...
- 阿里下一代云分析型数据库AnalyticDB入选Forrester云化数仓象限
前言 近期, 全球权威IT咨询机构Forrester发布"The Forrester Wave: CloudData Warehouse Q4 2018"研究报告,阿里巴巴分析型数 ...
- 阿里巴巴下一代云分析型数据库AnalyticDB入选Forrester Wave™ 云数仓评估报告 解读
前言近期, 全球权威IT咨询机构Forrester发布"The Forrester WaveTM: CloudData Warehouse Q4 2018"研究报告,阿里巴巴分析型 ...
- 回首2018 | 分析型数据库AnalyticDB: 不忘初心 砥砺前行
题记 分析型数据库AnalyticDB(下文简称ADB),是阿里巴巴自主研发.唯一经过超大规模以及核心业务验证的PB级实时数据仓库.截止目前,现有外部支撑客户既包括传统的大中型企业和政府机构,也包括众 ...
- amazon redshift 分析型数据库特点——本质还是列存储
Amazon Redshift 是一种快速且完全托管的 PB 级数据仓库,使您可以使用现有的商业智能工具经济高效地轻松分析您的所有数据.从最低 0.25 USD 每小时 (不承担任何义务) 直到每年每 ...
- 更强大的实时数仓构建能力!分析型数据库PostgreSQL 6.0新特性解读
阿里云 AnalyticDB for PostgreSQL 为采用MPP架构的分布式集群数据库,完备支持SQL 2003,部分兼容Oracle语法,支持PL/SQL存储过程,触发器,支持标准数据库事务 ...
- 彪悍开源的分析数据库-ClickHouse
https://zhuanlan.zhihu.com/p/22165241 今天介绍一个来自俄罗斯的凶猛彪悍的分析数据库:ClickHouse,它是今年6月开源,俄语社区为主,好酒不怕巷子深. 本文内 ...
- (转)操作型数据库的春天:MongoDB 1.5亿美元融资背后的故事
大部分融资都要耗时数月,但非关系式数据库MongoDB仅用3周时间就完成了1.5亿美元的融资.为什么这个进程会这么快,MongoDB CEO Max Schireson在接受采访时说,这是因为投资者看 ...
随机推荐
- 记录--JS 的垃圾回收机制
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 垃圾回收(Garbage Collection)是一种内存管理机制,用于检测和清理不再被程序使用的内存,这些不再被使用的内存就被称为 ...
- 如何使用文件传输协议ftp,教你使用文件传输协议命令行
FTP是文件传输协议的缩写.顾名思义,FTP用于在网络上的计算机之间传输文件.您可以使用文件传输协议在计算机帐户之间交换文件,在帐户和台式计算机之间传输文件或访问在线软件档案.但是请记住,许多文件传输 ...
- vivo 消息中间件测试环境项目多版本实践
作者:vivo 互联网中间件团队 - Liu Tao 在开源 RocketMQ 基础之上,关于[测试环境项目多版本隔离]业务诉求的落地与实践. 一.背景 在2022年8月份 vivo 互联网中间件团队 ...
- linux安装crontab
1.查看是否安装 rpm -qa | grep cron #没有输出内容说明没有安装 2.安装 yum -y install vixie-cron #cron 的主程序 yum -y install ...
- Fastjson反序列化分析
依赖 先研究1.2.24版本的,版本高了就有waf了,不过也能绕,高版本以后再说 <dependency> <groupId>com.alibaba</groupId&g ...
- 安装arch时用wpa_supplicant连接隐藏WPA2 wifi
参考 https://bbs.archlinux.org/viewtopic.php?id=156074 1.终端输入 vim /etc/wpa_supplicant/wpa_supplicant.c ...
- Spring---AoP(面向切面编程)原理学习笔记【全】
1.AOP 1.1.什么是AOP AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延 ...
- Java实现软件设计模式---抽象工厂模式(性别产品等级结构肤色产品族)
一.题目要求 二.画出对应的类图 三.文件目录结构 四.具体实现代码 Black.java 1 package com.a004; 2 3 public class Black implements ...
- 从优秀到卓越:成为DevOps专家的7项软技能
在我的职业生涯中,遇见过许多专业人士,他们在技术上非常健全,对自己的领域和技术有很好的掌握和专业知识,但是由于缺乏软技能,他们错过了晋升.现场机会.高级技术面试以及职业生涯中的机会.很震惊吧,技术好却 ...
- #倍增,LCA,Kruskal#JZOJ 1092 洛谷 4180 [BJOI 2010] 次小生成树
题目 给出一个无向图,问它的严格次小生成树(数据保证有解) 分析 首先先找一棵最小生成树,然后对于每条非树边\((x,y,w)\)可以找到最小生成树上\(x,y\)路径上略小于\(w\),首先如果能找 ...