zoukankan      html  css  js  c++  java
  • ClickHouse 监控及备份 (五)备份及恢复

    官网:https://clickhouse.tech/docs/en/operations/backup/

    1 手动实现备份及恢复

      ClickHouse 允许使用 ALTER TABLE ... FREEZE PARTITION ... 查询以创建表分区的本地副本。这是利用硬链接(hardlink)到 /var/lib/clickhouse/shadow/ 文件夹中实现的,所以它通常不会
    因为旧数据而占用额外的磁盘空间。 创建的文件副本不由 ClickHouse 服务器处理,所以不需要任何额外的外部系统就有一个简单的备份。防止硬件问题,最好将它们远程复制到另一个位置,然后删除本地副本。

    1.1 创建备份路径

    (1)创建用于存放备份数据的目录 shadow
    sudo mkdir -p /var/lib/clickhouse/shadow/
    如果目录存在,先清空目录下的数据

    1.2 执行备份命令

    echo -n 'alter table t_order_mt freeze' | clickhouse-client

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

    #创建备份存储路径
    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/*

    1.4 恢复数据

    (1)模拟删除备份过的表
    echo ' drop table t_order_mt ' | clickhouse-client
    (2)重新创建表
    cat events.sql | clickhouse-client
    (3)将备份复制到 detached 目录
    sudo cp -rl
    backup/my-backup-name/1/store/cb1/cb176503-cd88-4ea8-8b17-6503cd888ea8/*
    data/default/t_order_mt/detached/
     
    ClickHouse 使用文件系统硬链接来实现即时备份,而不会导致 ClickHouse 服务停机(或锁定)。这些硬链接可以进一步用于有效的备份存储。在支持硬链接的文件系统(例如本地
    文件系统或 NFS)上,将 cp 与-l 标志一起使用(或将 rsync 与–hard-links 和–numeric-ids 标志一起使用)以避免复制数据。
     
    注意:仅拷贝分区目录,注意目录所属的用户要是 clickhouse
    (4)执行 attach
    echo 'alter table t_order_mt attach partition 20200601' | clickhouse-client
    (5)查看数据
    echo 'select count() from t_order_mt' | clickhouse-client

    2 使用 clickhouse-backup

    上面的过程,我们可以使用 Clickhouse 的备份工具 clickhouse-backup 帮我们自动化实现。
    工具地址:https://github.com/AlexAkulov/clickhouse-backup/

    2.1 上传并安装

    将 clickhouse-backup-1.0.0-1.x86_64.rpm 上传至/opt/software/目录下,安装:
    [atguigu@hadoop1 software]$ sudo rpm -ivh
    clickhouse-backup-1.0.0-1.x86_64.rpm

    2.2 配置文件

    [atguigu@hadoop1 ~]$ cat /etc/clickhouse-backup/config.yml

    2.3 创建备份

    (1)查看可用命令
    [atguigu@hadoop1 ~]$ clickhouse-backup help
    (2)显示要备份的表
    [atguigu@hadoop1 ~]$ clickhouse-backup tables
    (3)创建备份
    [atguigu@hadoop1 ~]$ sudo clickhouse-backup create
    (4)查看现有的本地备份
    [atguigu@hadoop1 ~]$ sudo clickhouse-backup list
    备份存储在中/var/lib/clickhouse/backup/BACKUPNAME。备份名称默认为时间戳,但是可以选择使用–name 标志指定备份名称。备份包含两个目录:一个“metadata”目录,其中包
    含重新创建架构所需的 DDL SQL 语句;以及一个“shadow”目录,其中包含作为 ALTER TABLE ...FREEZE 操作结果的数据。
     

    2.4 从备份恢复数据

    (1)模拟删除备份过的表
    echo 'drop table t_order_rmt' | clickhouse-client
    (2)从备份还原
    sudo clickhouse-backup restore 2021-07-25T23-14-50
    --schema 参数:只还原表结构。
    --data 参数:只还原数据。
    --table 参数:备份(或还原)特定表。也可以使用一个正则表达式,例如,针对特定的数据库:--table=dbname.*。
     
    2.5 其他说明
    (1)API 文档:https : //github.com/AlexAkulov/clickhouse-backup#api
    (2)注意事项:切勿更改文件夹/var/lib/clickhouse/backup 的权限,可能会导致数据损
    坏。
    (3)远程备份
    ➢较新版本才支持,需要设置 config 里的 s3 相关配置
    ➢上传到远程存储:sudo clickhouse-backup upload xxxx
    ➢从远程存储下载:sudo clickhouse-backup download xxxx
    ➢保存周期: backups_to_keep_local,本地保存周期,单位天
                backups_to_keep_remote,远程存储保存周期,单位天
                                               0 均表示不删除
     
     
     
     
     
     
     
     
     

    本文来自博客园,作者:秋华,转载请注明原文链接:https://www.cnblogs.com/qiu-hua/p/15114539.html

  • 相关阅读:
    Windows10如何添加开机启动项
    selenium自动化文件上传、文件下载
    windows下创建虚拟环境
    selenium 处理js日历控件
    selenium鼠标和键盘事件
    selenium绕过某宝验证,手动验证滑块
    python国内镜像源
    Linux下jenking安装
    发送邮件
    基于python的selenium两种文件上传操作
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/15114539.html
Copyright © 2011-2022 走看看