使用clickhouse-backup工具备份clickhouse数据库

Posted gsls200808

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用clickhouse-backup工具备份clickhouse数据库相关的知识,希望对你有一定的参考价值。

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

dockerhub工具官网:https://hub.docker.com/r/alexakulov/clickhouse-backup

注意:这个工具只支持MergeTree 系列表引擎

一、clickhouse在容器外的备份和恢复

若clickhouse装在容器外,如宿主机里

下载

wget https://github.com/AlexAkulov/clickhouse-backup/releases/download/v2.1.3/clickhouse-backup-linux-amd64.tar.gz
mkdir tmp
tar -zxvf clickhouse-backup-linux-amd64.tar.gz -C ./tmp
cd tmp/build/linux/amd64
cp clickhouse-backup /usr/local/bin
clickhouse-backup -v

创建配置文件

mkdir -p /etc/clickhouse-backup/
cd /etc/clickhouse-backup/

创建config.yml内容如下

general:
  remote_storage: none
clickhouse:
  username: default
  password: ""
  host: localhost
  port: 9000

创建备份

clickhouse-backup create

默认备份目录在/var/lib/clickhouse/backup/目录下,默认创建的备份是以时间戳形式的,每个备份包含两个目录,分别是

metadata目录: 包含重新创建所需的DDL SQL

shadow目录: 包含作为ALTER TABLE ... FREEZE操作结果的数据

若缺少shadow目录,看你的程序是否能访问clickhouse数据库的/var/lib/clickhouse/目录。

查看备份列表

clickhouse-backup list

恢复备份

clickhouse-backup restore 2020-07-06T20-13-02

二、clickhouse在容器内的备份和恢复

1.方式一、映射容器目录直接拷贝

需要映射的目录如下

     volumes:
         - "$PWD/clickhouse/data:/var/lib/clickhouse"
         - "$PWD/clickhouse/log:/var/log/clickhouse-server"
         - "$PWD/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml"
         - "$PWD/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml"

直接拷贝对于目录即可

2.方式二、备份到clickhouse的容器目录

备份命令

docker run -u $(id -u root) --rm -it --network docker-compose_default --volumes-from clickhouse \\
   -e CLICKHOUSE_HOST="clickhouse" \\
   -e CLICKHOUSE_USERNAME="default" \\
   -e CLICKHOUSE_PASSWORD="" \\
   alexakulov/clickhouse-backup create

默认备份到clickhouse容器里的/var/lib/clickhouse/backup/目录下

其中network 可以使用docker inspect [容器名] 查看所使用的网络名,CLICKHOUSE_HOST 使用容器名或者外部ip,

恢复命令如下

docker run -u $(id -u root) --rm -it --network docker-compose_default --volumes-from clickhouse \\
   -e CLICKHOUSE_HOST="clickhouse" \\
   -e CLICKHOUSE_USERNAME="default" \\
   -e CLICKHOUSE_PASSWORD="" \\
   alexakulov/clickhouse-backup restore 2020-07-06T20-13-02

3.方式三、备份到clickhouse到远程sftp服务器

这个比较灵活,远程服务器开了ssh就行

备份命令

docker run -u $(id -u root) --rm -it --network docker-compose_default --volumes-from clickhouse \\
   -e CLICKHOUSE_HOST="clickhouse" \\
   -e CLICKHOUSE_USERNAME="default" \\
   -e CLICKHOUSE_PASSWORD="" \\
   -e REMOTE_STORAGE="sftp" \\
   -e SFTP_ADDRESS="192.168.3.51" \\
   -e SFTP_USERNAME="root" \\
   -e SFTP_PASSWORD="root" \\
   -e SFTP_PATH="/root/clickhouse/backup" \\
   alexakulov/clickhouse-backup create_remote

远程服务器需要创建/root/clickhouse/backup目录

恢复命令如下

docker run -u $(id -u root) --rm -it --network docker-compose_default --volumes-from clickhouse \\
   -e CLICKHOUSE_HOST="clickhouse" \\
   -e CLICKHOUSE_USERNAME="default" \\
   -e CLICKHOUSE_PASSWORD="" \\
   -e REMOTE_STORAGE="sftp" \\
   -e SFTP_ADDRESS="192.168.3.51" \\
   -e SFTP_USERNAME="root" \\
   -e SFTP_PASSWORD="root" \\
   -e SFTP_PATH="/root/clickhouse/backup" \\
   alexakulov/clickhouse-backup restore_remote 2020-07-06T20-13-02

以上是关于使用clickhouse-backup工具备份clickhouse数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CL 工具连接远程 db2 数据库?

在 MSYS 环境中使用 MSVC 工具链(例如:CL.EXE)时,如何避免“未解析的外部符号 _mainCRTStartup”错误?

VC++ cl编译器的gdb等效?

python “使用Python自动化无聊的东西”一书中的多层板工具。用于存储和检索常用文本,通过cl

python “使用Python自动化无聊的东西”一书中的多层板工具。用于存储和检索常用文本,通过cl

如何为 Visual Studio 构建工具 cl.exe 编写 makefile(nmake)