栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

StarRocks故障恢复 - 单副本表恢复

StarRocks故障恢复 - 单副本表恢复

问题描述

如果一个表为单副本表(虽然这并并不推荐,一般推荐为3副本以保证tablet的高可用),此时用户忽略了这个问题,对be进行了下线的操作:

MySQL> alter system drop backend "be_host:be_heartbeat_service_port";

此时会导致查询时,报找不到tablet的错误:

10063这个tablet在相应的be被drop掉之后造成副本缺失。此时如果下线的机器上数据仍然存在的话是可以恢复的。当然,如果机器下线后数据被删除了,那就只能重新导入数据了。

恢复方法

在已下线的be的storage_root_path配置的目录中找到10063对应的存储目录:

$ ls $storage_root_path/data/*/ | grep 10063

假设路径为:$storage_root_path/data/0/10063/81944231/

获取对应的元数据:

$ export STARROCKS_HOME=[path]
$ export LD_LIBRARY_PATH=$STARROCKS_HOME/lib/jvm/amd64/server:$STARROCKS_HOME/lib/jvm/amd64:$LD_LIBRARY_PATH
$./lib/meta_tool --operation=get_meta --root_path=hdfs/d7/dorisdb/data --tablet_id=10063 --schema_hash=81944231 > 10063.meta

注意:如果是1.19(含)之后的版本使用命令./lib/starrocks_be meta_tool

1)将该目录scp到集群中的任意一个be节点host1对应的目录下$storage_root_path/data/0/

2)将10063.meta 文件scp到host1上的/tmp/下

登录到host1,执行:

$ cd $STARROCKS_HOME/be
$ bin/stop_be.sh
$ export LD_LIBRARY_PATH=$STARROCKS_HOME/lib/jvm/amd64/server:$STARROCKS_HOME/lib/jvm/amd64:$LD_LIBRARY_PATH
$ ./lib/starrocks_be meta_tool --operation=load_meta --root_path=/storage/root/path --json_header_path=/tmp/10063.meta
$ bin/start_be.sh --daemon

再次查询,可以正常执行。

Notes:

1、单副本情况下,数据能否恢复存在一定的概率,因而在创建表时一定要创建3副本(默认为3副本),以保证高可用。

2、在be下线时,推荐使用DECOMMISSION的方式。DROP会立刻删除BE节点,丢失的副本由FE调度补齐;DECOMMISSION先保证副本补齐,然后再下掉BE节点。DECOMMISSION方式更加友好一点,建议采用这种方式进行缩容。

3、在执行类似恢复操作时,尤其涉及到元数据的操作,都是高危操作,容易造成数据损坏甚至不可用,务必特别谨慎,最好先在测试环境进行演练,必要时跟官方确认。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/712322.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号