Clickhouse 数据恢复 - 硬件损坏导致数据文件损坏

现象

clickhouse 数据库数据块【硬件损坏导致】,数据库离线,元数据损坏,存储的数据文件[块]损坏。

1. 数据文件处理

1.1 备份原始数据文件

1. 重命名原始数据文件目录,并移动到备份目录下
mkdir -p  /data/clickhouse/data_bak
2. 切换到数据目录
cd /data/clickhouse/data
mv shuzhi_dpi  /data/clickhouse/data_bak/shuzhi_dpi_bak_original 【建议mv ,可以保证所有数据包括异常数据也能同步过来】

1.2. 备份元数据并恢复数据库元数据

1. 重命名元数据文件目录,并移动到备份目录下
mkdir -p  /data/clickhouse/metadata_bak
2. 切换到元数据目录下
cd /data/clickhouse/metadata
3. 把原始sql文件移到备份目录
mv shuzhi_dpi /data/clickhouse/metadata_bak/shuzhi_dpi_metadata_bak_original
3. 创建数据库元数据目录
mkdir -p shuzhi_dpi

1.3 数据库恢复在线

Systemctl restart clickhouse-server , shuzhi_dpi 数据库恢复在线。

2. 数据恢复

2.1 去除损坏的数据文件,并把数据复制一份到数据目录下

1. 把原始数据 cp 一份数据到数据目录【/data/clickhouse/data】下,可以去除异常的文件
	cp -r /data/clickhouse/data_bak/shuzhi_dpi_bak_original /data/clickhouse/data/shuzhi_dpi
2. 遍历每个目录删除	format_version.txt 文件。

备注:存在 粉红色 的文件,重启会报错,数据库无法连接,删除再重启server即可。

2.2 表创建于数据恢复。

数据恢复脚本:

#/bin/bash

# sql 元数据备份目录
cd /data/clickhouse/metadata_bak/shuzhi_dpi_metadata_bak_original

filesql=`ls`

for sql in $filesql 
do
	# 遍历执行sql
	clickhouse-client -u default --password ******* -h 127.0.0.1 -d shuzhi_dpi --multiquery < $sql
done

2.3 重启clickhouse-server。

Systemctl restart clickhouse-server

4. 查看数据恢复情况

连接clickhouse  
clickhouse-client -h 127.0.0.1 -u default --password password
查看数据恢复情况:
use shuzhi_dpi;
Show tables;
# 查看表数据
Select * from tablename;

5. 备注

  1. sql 元数据中可能会存在乱码的sql文件,可以使用python等语言做过滤或者shell脚本等语言过滤;数据文件同理。
  2. 当数据目录 /data/clickhouse/data/shuzhi_dpi/detached 下存在可用的离线数据文件时,不能 create table table() 语句,要使用 ATTACH table table(),把离线的数据附加到表中。【/data/clickhouse/data/shuzhi_dpi/detached 下的文件是被分离的文件】
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值