Doris删库元数据删除怎么办?紧急恢复单副本情况

news2024/11/15 5:50:57

简介

正常情况下,如果是多副本的数据存储很容易修复,删除一个两个be也能根据doris自身的恢复机制恢复起来,但是,有时候可能有些表没有弄多个副本,那么就有点搞头了

案例说明:fe的master节点的数据误删除,导致集群直接都宕机,那么如果是单个fe的话,那么可以使用云存储的快照功能恢复到指点的时间点的元数据存储,如果是多个节点的fe删除了master那么可以使用如下操作。

恢复Fe的数据

问题一

(操作之前记得备份一份),删除执行目录下的文件,如下目录下的ROLE和VERSION(如果能够正常启动那么不需要删除,启动不了那么就删除ROLE和VERSION)

/apache-doris-fe-1.2.0-bin-x86_64/doris-meta/image

删除ROLE和VERSION,不要删除image文件(如果能够正常启动那么不需要删除,启动不了那么就删除ROLE和VERSION

然后再fe.conf配置如下(恢复到可以连接查询元数据的时候,停掉服务,取消下面的配置就可以了,恢复以后把新生成的VERSION数据的集群id修改成之前的集群id,原因是要和Be的集群id一样)

metadata_failure_recovery=true

问题二

下面的问题是由于fe数据同步出了问题,有多个fe那么就删除这种节点重新加入节点,没有就用上面的方法,删除Fe元数据里面的ROLE和VERSION进行恢复。

#在sql命令行执行
ALTER SYSTEM DROP FOLLOWER "100.200.0.36:9010";
ALTER SYSTEM ADD FOLLOWER "100.200.0.36:9010";

#要加入的节点,10.200.8.117是master节点,加入的节点的端口一定要和集群所有的端口相同
./bin/start_fe.sh --helper 100.200.8.117:9010  --daemon

启动Be

恢复完Fe的数据以后,那么就可以启动Be了(如果Be使用到了supervisord,那么先关闭的,如果没有关闭,他就会在Be的数据存储目录meta目录和stream_load有一个LOCK文件,这是由于开启了自启动,和后面调试起来锁争抢问题,删除LOCK文件在重新启动就可以了)。

修复表单副本删除问题

可能有的Be的sst文件丢失了,那么可以使用云的磁盘快照功能,恢复到指定时间的数据,恢复以后会有以下问题。

问题一:找不到对应的tablet(用空白tablet填补)

可以使用下面的命令进行空白tablet的覆盖,那么会丢失近一天的数据(详情看doris官网介绍)。

ADMIN SET FRONTEND CONFIG ("recover_with_empty_tablet" = "true");

修复完以后修改成false

ADMIN SET FRONTEND CONFIG ("recover_with_empty_tablet" = "false");

 问题二: Fe数据版本比Be数据版本高

ERROR 1105 (HY000): errCode = 2, detailMessage = (100.200.8.186)[INTERNAL_ERROR]failed to initialize storage reader. tablet=6708126.992547307.aa48977d2d69366b-180d241750a968ae, res=[INTERNAL_ERROR]fail to find path in version_graph. spec_version: 0-132, backend=100.200.8.186

修复步骤

============================================================================
#查询报错的表

mysql> select * from databasename.tablename limit 10;
ERROR 1105 (HY000): errCode = 2, detailMessage = (100.20.8.16)[INTERNAL_ERROR]failed to initialize storage reader. tablet=20289334.1750657277.ab4aa3a697bb5bec-ea5fe4f921c9f8ba, res=[INTERNAL_ERROR]fail to find path in version_graph. spec_version: 0-48974, backend=100.20.8.16

#查询tablet的详细信息,然后执行DetailCmd下面的命令
mysql> show tablet 20289334;
+------------------------------------+----------------+----------------+----------------+--------+---------+-------------+---------+--------+-------+-----------------------------------------------------------------------+
| DbName                             | TableName      | PartitionName  | IndexName      | DbId   | TableId | PartitionId | IndexId | IsSync | Order | DetailCmd                                                             |
+------------------------------------+----------------+----------------+----------------+--------+---------+-------------+---------+--------+-------+-----------------------------------------------------------------------+
| default_cluster:databasename | tablename | tablename | tablename | 993914 | 6091980 | 20289269    | 6091981 | true   | 16    | SHOW PROC '/dbs/993914/6091980/partitions/20289269/6091981/20289334'; |
+------------------------------------+----------------+----------------+----------------+--------+---------+-------------+---------+--------+-------+-----------------------------------------------------------------------+
1 row in set (0.00 sec)


mysql> SHOW PROC '/dbs/993914/6091980/partitions/20289269/6091981/20289334';
+-----------+-----------+---------+-------------------+------------------+---------------+------------+---------------+----------------+----------+--------+-------+--------------+----------------------+---------------------------------------------------+-----------------------------------------------------------------+
| ReplicaId | BackendId | Version | LstSuccessVersion | LstFailedVersion | LstFailedTime | SchemaHash | LocalDataSize | RemoteDataSize | RowCount | State  | IsBad | VersionCount | PathHash             | MetaUrl                                           | CompactionStatus                                                |
+-----------+-----------+---------+-------------------+------------------+---------------+------------+---------------+----------------+----------+--------+-------+--------------+----------------------+---------------------------------------------------+-----------------------------------------------------------------+
| 20289335  | 992447    | 48974   | 48974     这个是最后成功的版本,也就是Fe有,Be没有的数据版本!!!        | -1               | NULL          | 1750657277 | 23244725      | 0              | 758834   | NORMAL | false | 9            | -1695231754850110287 | http://10.240.8.73:8040/api/meta/header/20289334  | http://10.240.8.73:8040/api/compaction/show?tablet_id=20289334  |
| 20289337  | 992604    | 48974   | 48974             | -1               | NULL          | 1750657277 | 23244725      | 0              | 758834   | NORMAL | false | 9            | -7776024449396720965 | http://10.240.8.9:8040/api/meta/header/20289334   | http://10.240.8.9:8040/api/compaction/show?tablet_id=20289334   |
| 29024516  | 993073    | 48974   | 48974             | -1               | NULL          | 1750657277 | 23220943      | 0              | 758485   | NORMAL | false | 7            | -7256810246008465985 | http://100.20.8.16:8040/api/meta/header/20289334 | http://100.20.8.16:8040/api/compaction/show?tablet_id=20289334 |
+-----------+-----------+---------+-------------------+------------------+---------------+------------+---------------+----------------+----------+--------+-------+--------------+----------------------+---------------------------------------------------+-----------------------------------------------------------------+


#查看合并的版本情况,由于现在完成的版本是 48974,下面的是成功合并的版本[48410-48665],那么就从48666 开始合并,直到48974(这里就是补齐Be没有但是Fe有的数据)

curl http://100.20.8.16:8040/api/compaction/show?tablet_id=20289334


[root@doris1 ~]# curl http://100.20.8.16:8040/api/compaction/show?tablet_id=20289334
{
    "cumulative policy type": "SIZE_BASED",
    "cumulative point": 2,
    "last cumulative failure time": "2023-10-19 18:57:10.751",
    "last base failure time": "1970-01-01 08:00:00.000",
    "last cumulative success time": "2023-10-19 18:57:10.751",
    "last base success time": "2023-10-19 18:57:10.751",
    "rowsets": [
        "[0-1] 0 DATA NONOVERLAPPING 0200000000b943b1624293f95b56fef5e5a0a7526615fbb0 0",
        "[2-8892] 1 DATA NONOVERLAPPING 0200000000b943b2624293f95b56fef5e5a0a7526615fbb0 16.68 MB",
        "[8893-44310] 1 DATA NONOVERLAPPING 0200000000fd69e8624293f95b56fef5e5a0a7526615fbb0 4.62 MB",
        "[44311-44940] 1 DATA NONOVERLAPPING 020000000102d9dd624293f95b56fef5e5a0a7526615fbb0 531.21 KB",
        "[44941-47519] 1 DATA NONOVERLAPPING 020000000118285f624293f95b56fef5e5a0a7526615fbb0 252.91 KB",
        "[47520-48409] 1 DATA NONOVERLAPPING 02000000011fd182624293f95b56fef5e5a0a7526615fbb0 64.41 KB",
        "[48410-48665] 1 DATA NONOVERLAPPING 020000000121faaf624293f95b56fef5e5a0a7526615fbb0 21.43 KB"
    ],
    "missing_rowsets": [],
    "stale_rowsets": [],
    "stale version path": []
}

#查看合并的版本情况,由于现在完成的版本是 48974,下面的是成功合并的版本[48410-48665],那么就从48666 开始合并,直到48974
curl -X POST "http://100.20.8.16:8040/api/pad_rowset?tablet_id=20289334&start_version=48666&end_version=48974"

数据库删除恢复

#恢复数据库
RECOVER DATABASE example_db;
#恢复表
recover table 表名;
#强制删除
drop xxx force;
#查看回收站
show trash;

预防删库

1. 首先机器节点数需要 >= 复本数
2. 修改历史分区副本数:alter table modify partition(*) set ("replication_num" = "3");
3. 动态分区修改未来分区副本数:ALTER TABLE example_db.mysql_table  SET ("dynamic_partition.replication_num" = "3");
4. 非分区表:ALTER TABLE example_db.mysql_table SET ("replication_num" = "3");

ADMIN SHOW REPLICA STATUS FROM 数据库.表名;

show partitions from 数据库.表名;


备注: 先对测试表进行操作,看测试表的状态是否符合预期,进行show partitions from table 和 show create table 进行查看核对,show partitions from 是实际的副本数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1114148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

笔记本电脑Windows10安装

0 前提 安装windows10的电脑为老版联想笔记本电脑,内部没有硬盘,临时加装了1T的硬盘。 1u盘准备 准备u盘,大小大于16G。u盘作为系统盘时,需要将内部的其他文件备份,然后格式化。u盘格式化后,插入一款可以…

eNSP-OSPF协议其他区域不与骨干区域相连解决方法2

隧道技术 AR1 [ar1]int g0/0/0 [ar1-GigabitEthernet0/0/0]ip add 192.168.1.1 24 [ar1-GigabitEthernet0/0/0]quit [ar1]ospf [ar1-ospf-1]area 0 [ar1-ospf-1-area-0.0.0.0]net 192.168.1.0 0.0.0.255 [ar1-ospf-1-area-0.0.0.0]quit AR2 [ar2]int g0/0/0 [ar2-GigabitEthe…

父组件与子组件的属性透传

透传是vue中一种特性,官方的解释是:“透传 attribute”指的是传递给一个组件,却没有被该组件声明为 props 或 emits 的 attribute 或者 v-on 事件监听器。最常见的例子就是 class、style 和 id。这句话解释过来就是一些不被prop定义的属性直接…

信钰证券:这些板块,逆市走强!

A股商场今天上午出现调整,上证指数跌破3000点,不过跌幅不大。 新动力赛道股打开反弹,其间,锂矿概念股成为上午商场最大亮点,吉翔股份2连板,龙头股赣锋锂业暴升7.74%。风电股也震荡走强,威力传动…

Hadoop学习总结(搭建Hadoop集群(完全分布式模式))

学习搭建Hadoop集群(完全分布式模式) 链接:https://pan.baidu.com/s/1wwTKk-XxHbccHjE-Xk2PTA 提取码:q7j7 在SecurityCRT 或者在 Xshell 进行虚拟机链接 (这里使用Xshell ) 在hadoop001里配置 如果没…

【c#】Quartz开源任务调度框架学习及练习Demo

Quartz开源任务调度框架学习及练习Demo 1、定义、作用 2、原理 3、使用步骤 4、使用场景 5、Demo代码参考示例 6、注意事项 7、一些Trigger属性说明 1、定义、作用 Quartz是一个开源的任务调度框架,作用是支持开发人员可以定时处理业务,比如定时…

【C语言入门】C语言的历史 与 编程环境的安装选择与搭建

C语言入门 前言C语言的概念与历史一、什么是C语言?二、 C语言的历史与辉煌环境的选择三、编译器的选择 VS2022(一)编译和链接(二)编译器的对比(三)VS2022 的优缺点(四)VS…

解决 阿里云oss 对象存储 bucket 中的文件不能在线预览 只能下载

我的域名是在腾讯云的,所以点开腾讯云的域名解析后台。 点击添加记录; 记录类型选 CNAME;主机记录 随便写;解析线路 默认; 记录值 填你的bucketname 就是你存储文件的bucket的名字 然后 . 域名所在区域 北京就是oss-c…

SqueezeNet 一维,二维网络复现 pytorch 小白易懂版

SqueezeNet 时隔一年我又开始复现神经网络的经典模型,这次主要复的是轻量级网络全家桶,轻量级神经网络旨在使用更小的参数量,无限的接近大模型的准确率,降低处理时间和运算量,这次要复现的是轻量级网络的非常经典的一…

WebSocket 入门案例

目录 WebSocket入门案例WebSocket-server新增项目:添加依赖:yml:启动类: frontend-server前端项目:添加依赖:添加yml:启动类:前端引入JS:前端页面:后端代码:测试: WebSocket 入门案…

众和策略:地产板块发力走高,荣盛发展涨停,碧桂园等大幅拉升

地产板块20日盘中发力走高,到发稿,金科股份、荣盛展开涨停,中南建造、富丽家族涨超7%,华夏夸姣涨逾6%。 港服方面,内资地产股亦走强,到发稿,珠光控股涨超20%,碧桂园涨近10%&#xf…

PBA.常用人工智能预测分析算法

相同的数据型态,利用不同的方法分析,就可以解决不同的课题。例如目前已相当纯熟的人脸识别技术,在国防应用可以进行安保工作;企业可做员工门禁系统;可结合性别、年龄辨识让卖场进行市调分析,或结合追踪技术…

聚焦于先进电池技术等领域的前沿研究和应用,龙讯旷腾出席中国化学会第二届能源化学青年论坛

成都站电催化培训 2023年龙讯团队线下培训已走过北京、西安等城市,前几期均以定向邀请非公开的形式培训,应大家的积极号召,本期电催化成都站的培训我们将以公开招募的形式举办,并且保留前几期的优惠(前30位免费&#…

html网页代码块高亮加行号

程序示例精选 html网页代码块高亮加行号 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《html网页代码块高亮加行号》编写代码,代码整洁,规则,易读。 学习…

shopee平台现在好做吗

Shopee 是一家知名的电子商务平台,特别在东南亚地区非常流行。是否在 Shopee 平台做生意是否好做取决于多种因素,包括你的产品、市场竞争、营销策略和运营能力等。 以下是一些考虑因素: 1、产品选择:选择畅销的产品或具有市场需求…

需要在 MySQL 服务器中监控的重要指标

MySQL是一个开源的关系数据库管理系统,它基于客户端-服务器模型运行,使用SQL作为其通信模式。它具有灵活性和可扩展性、高安全性、易用性以及无缝处理大型数据集的能力,由于其广泛的功能,MySQL 被用作数据库管理系统的一部分。 什…

初识Java 14-2 测试

目录 测试驱动开发(TDD) 日志 调试 使用JDB进行调试 基准测试 微基准测试 Java微基准测试工具(JMH) 分析和优化 重构 本笔记参考自: 《On Java 中文版》 测试驱动开发(TDD) 测试驱动开…

高博学子参加第二届火焰杯软件测试高校就业选拔赛喜获佳绩

近日,高博软件学院软件工程教研室组织指导全院近80名学生参加第二届火焰杯软件测试高校就业选拔赛。经过初赛、决赛,共有13名同学获优秀奖。获奖名单如下:(排名不分先名):滕美妙、陈虹霖、陆春媚、陈媛、周…

厚壁菌门/拟杆菌门——肠道菌群的阴阳面,代表什么

在研究肠道菌群或复杂微生物样本构成时,“门"(Phylum)是细菌分类的高级分类单位之一。 细菌分类依次为门纲目科属种亚种,最大的分类层面是门,以前写过人群肠道菌群构成主要是以拟杆菌门和厚壁菌门为主&#xff0c…

基于YOLOv5[n/s/m/l/x]全系列参数模型开发构建小麦麦穗颗粒智能化精准检测识别计数系统

小麦麦穗颗粒或者是其他农作物颗粒计数本身是一件很繁琐枯燥的事情,这种事情交给程序来做是最好不过的了,最近正好在做课题项目,导师给的题目就是跟农业相关的,这里想的就是基于目标检测模型来开发构建一套智能化的精准检测计数系…