admin管理员组文章数量:1567746
Clickhouse 数据恢复
- 现象
- 1. 数据文件处理
- 1.1 备份原始数据文件
- 1.2. 备份元数据并恢复数据库元数据
- 1.3 数据库恢复在线
- 2. 数据恢复
- 2.1 去除损坏的数据文件,并把数据复制一份到数据目录下
- 2.2 表创建于数据恢复。
- 2.3 重启clickhouse-server。
- 4. 查看数据恢复情况
- 5. 备注
现象
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. 备注
- sql 元数据中可能会存在乱码的sql文件,可以使用python等语言做过滤或者shell脚本等语言过滤;数据文件同理。
- 当数据目录 /data/clickhouse/data/shuzhi_dpi/detached 下存在可用的离线数据文件时,不能 create table table() 语句,要使用 ATTACH table table(),把离线的数据附加到表中。【/data/clickhouse/data/shuzhi_dpi/detached 下的文件是被分离的文件】
本文标签: 数据恢复硬件文件数据clickhouse
版权声明:本文标题:Clickhouse 数据恢复 - 硬件损坏导致数据文件损坏 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1726033765a1052711.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论