【技术实现步骤摘要】
一种etcd数据库文件修复方法
[0001]本专利技术涉及数据修复
,具体的说是一种etcd数据库文件修复方法。
技术介绍
[0002]etcd是一个分布式键值存储系统,用于共享配置和服务发现及多版本键值数据存储。其采用Go语言编写,具有出色的跨平台支持,各成员节点之间通过Raft算法保持强一致性。etcd作为最热门的云原生存储之一,被广泛应用与云计算领域中,其中开源的容器编排系统Kubernetes便使用etcd存储各种资源对象。
[0003]etcd作为kubernetes容器编排引擎使用的数据库存储技术,随着云计算、云原生技术的普及,使用场景愈来愈多。如何保障etcd数据安全,如何应对数据故障,都是需要使用人员应该考虑的问题。etcd提供专业的工具可以对数据库进行快照备份,如何进行数据库备份,间隔多长时间对数据进行备份,也需使用人员根据现有集群业务使用情况进行综合考虑进行权衡制定备份方案。如果没有采取数据备份,或备份时间间隔过长,在产生故障时就有可能导致数据的丢失,有时造成的损失是无法弥补和估量的。 />
技术实现思路
...
【技术保护点】
【技术特征摘要】
1.一种etcd数据库文件修复方法,其特征在于,所述方法基于etcd使用的底层数据存储引擎boltDB数据存储机制,逐页扫描并解析数据db文件中存储的数据内容,按页类型进行分类存储,将所有leafPage中数据按etcd中mvcc格式进行解析,并将解析到的数据内容插入到目标数据库初始化的新db文件,实现对损坏数据db文件的修复。2.根据权利要求1所述的一种etcd数据库文件修复方法,其特征在于,boltDB数据存储引擎页类型包括:metaPage、branchPage、leafPage及freelistPage,其中:metaPage用于存储db文件的总页数、当前事务编号、PageSize,分布于第0页及第1页;branchPage用于存储当前分支包含的leafPage信息;leafPage对应B+数中叶子节点,用于存储所有键值对信息,也用于存储bucket的subbucket信息,leafPage在组织数据时,将元素头和元素本身分开存储,其元素头数据是定长的,可按下标快速访问对应的元素;freelistPage用于存储db文件中一个或多个连续的页,用于保存在db使用过程中由于修改操作而释放的页的id列表信息。3.根据权利要求2所述的一种etcd数据库文件修复方法,其特征在于,基于db文件的损坏类型,包括如下两种修复方式:(一)针对db文件结构完整、元数据损坏的场景,修复db文件meta页root存储桶中总页数;(二)针对db文件结构及元数据均损坏的场景,将损坏db文件进行完整数据迁移。4.根据权利要求3所述的一种etcd数据库文件修复方法,其特征在于,db文件结构完整、元数据损坏的场景下,db文件大小与meta页中不一致,此时,需根据db文件大小及操作系统PageSize,重新计算出总页数,修正损坏db文件中meta页中总页数元数据及剔除freelist页编号超过总页数的记录。5.根据权利要求4所述的一种etcd数据库文件修复方法,其特征在于,db文件结构完整、元数据损坏的场景下,db文件具体修复过程如下:(1)解析db文件页PageSize,获取PageSize大小;(2)计算db文件总页数(2.1)获取db文件总字节数:在db文件所在服务器上借助查看文件信息命令获取、文件总字节数,或通过程序编码获取db文件总字节数,(2.2)由步骤(2.1)获取的总字节数除以步骤(1)中获取的PageSize大小,结果再加上1,记为db文件实际总页数;(3)比对db文件元数据(3.1)根据...
【专利技术属性】
技术研发人员:韩坤,王文岗,石光银,蔡卫卫,高传集,
申请(专利权)人:浪潮云信息技术股份公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。