使用clickhouse-backup做数据备份与还原

一、clickhouse-backup 简介

clickhouse-backup 是社区开源的一个 clickhouse 备份工具,可用于实现数据迁移。其原理是先创建一个备份,然后从备份导入数据,类似于 MySQL 的 mysql dump + source。

使用限制

  • 支持1.154390以上的 clickhouse
  • 仅支持 MergeTree 系列表引擎
  • 不支持备份 Tiered storage 或 stora_policy
  • 云存储上的最大备份大小为 5TB
  • AWS S3上的 parts 数量最大为 10000

二、clickhouse-backup 安装

2.1、解压安装包

bash 复制代码
tar -zxf clickhouse-backup-linux-amd64.tar.gz -C /opt/module

解压后在 /opt/module 目录下会有一个build 目录

2.2、创建软连接

bash 复制代码
sudo ln -sv /opt/module/build/linux/amd64/clickhouse-backup /usr/local/bin/

2.3、测试 clickhouse-backup命令

bash 复制代码
clickhouse-backup -v

2.4、创建配置文件

bash 复制代码
sudo mkdir -p /etc/clickhouse-backup/
vim /etc/clickhouse-backup/config.yml
yaml 复制代码
general:
  remote_storage: none
  backups_to_keep_local: 0 # 本地备份保留个数,默认0表示不自动做备份清理
  log_level: info
clickhouse:
  username: default #clickhouse 用户名
  password: #密码
  host: node1         #实际节点hostname
  port: 9000 # tcp 端口
  data_path: "/data/lib/clickhouse" #clickhouse的数据的实际存储位置
  skip_tables:
    - system.*
    - INFORMATION_SCHEMA.*
    - information_schema.*
  config_dir: "/etc/clickhouse-server"

更多相关配置可以看官网 https://github.com/Altinity/clickhouse-backup?tab=readme-ov-file

三、备份数据

3.1、全库(default 库)备份

语法:

bash 复制代码
clickhouse-backup create [-t, --tables=<db>.<table>] <backup_name>

例子:

bash 复制代码
sudo clickhouse-backup create -t default.* default_back_0225

3.2、备份单个表

例子:

bash 复制代码
sudo clickhouse-backup create  -t default.test test_back_0225 

3.3、备份多个表

例子:

bash 复制代码
sudo clickhouse-backup create  -t default.test1,default.test2 test1_test2_back_0225

四、使用备份还原数据

将 default_back_0225 目录整个目录传送到目标服务器的/data/lib/clickhouse/backup 目录下,然后执行命令

bash 复制代码
clickhouse-backup restore  default_back_0225 --data

运行完成后可以查看数据是否迁移成功

单表从备份还原

使用 --schema 恢复表的表结构

bash 复制代码
clickhouse-backup restore 备份名 --table 库名.表名  --schema

用 --data 恢复表中数据(注意:由于是ATTACH PARTITION操作,如果执行2次的话,数据会翻倍)

bash 复制代码
clickhouse-backup restore 备份名 --table 库名.表名  --data
  • 注意:如果是从单节点的 MergeTree 引擎表还原至多节点的分布式本地表的ReplicatedMergeTree 引擎表,需要目标服务器已经建好库和表,库中表名与表结构需要和备份库一致。
相关推荐
xiaobaishuoAI4 分钟前
全链路性能优化实战指南:从瓶颈定位到极致优化
大数据·人工智能·科技·百度·geo
ASS-ASH5 分钟前
快速处理虚拟机磁盘扩容问题
linux·数据库·vmware·虚拟机·磁盘扩容
AI_56785 分钟前
零基础学Linux:21天从“命令小白”到独立部署服务器
linux·服务器·人工智能·github
乾元7 分钟前
如何把 CCIE / HCIE 的实验案例改造成 AI 驱动的工程项目——从“实验室能力”到“可交付系统”的完整迁移路径
大数据·运维·网络·人工智能·深度学习·安全·机器学习
不染尘.8 分钟前
Linux基本概述
linux·windows·centos·ssh
TTGGGFF12 分钟前
GLM-4V-9B 视觉多模态模型本地部署教程【保姆级教程】
linux·运维·服务器·图文对话
消失的旧时光-194314 分钟前
函数指针 + 结构体 = C 语言的“对象模型”?——从 C 到 C++ / Java 的本质统一
linux·c语言·开发语言·c++·c
xiaobaishuoAI15 分钟前
后端工程化实战指南:从规范到自动化,打造高效协作体系
java·大数据·运维·人工智能·maven·devops·geo
郝学胜-神的一滴18 分钟前
Linux系统编程:深入理解读写锁的原理与应用
linux·服务器·开发语言·c++·程序人生
Larry_Yanan19 分钟前
Qt多进程(十一)Linux下socket通信
linux·开发语言·c++·qt