一种值日志系统中数据库备份的方法和系统技术方案

技术编号:33639447 阅读:13 留言:0更新日期:2022-06-02 01:57
本发明专利技术公开了一种值日志系统中数据库备份的方法和系统,方法包括如下步骤:产生检查点,获取值日志系统当前检查点对应的LSN;获取LSM树快照,收集LSM索引树的每颗子树,然后生成待备份的SSTable的链表;LSM索引树中,一个SSTable对应一个持久化的索引文件,从待备份的SStable链表中取出一个SSTable,备份SSTable对应的索引文件的数据,存储到备份文件中,依次类推取下一个SSTable备份,直到待备份的SSTable链表为空;获取值日志系统的值日志文件,从开头位置一直拷贝到检查点对应的LSN偏移处,存储备份文件中,完成值日志系统的备份;系统包括:备份装置、检查点模块、SSTable子树收集模块、LSM子树备份模块和值日志备份模块。本发明专利技术能够保证用户数据的完整性,利用备份恢复用户数据。备份恢复用户数据。备份恢复用户数据。

【技术实现步骤摘要】
一种值日志系统中数据库备份的方法和系统


[0001]本专利技术涉及数据库
,尤其是一种值日志系统中数据库备份的方法和系统。

技术介绍

[0002]数据库的备份要保证数据不丢失或者最小程度丢失数据。数据库备份主要分为冷备和热备。热备是指数据运行中执行备份,对正在运行的数据库操作没有任何影响。冷备是指备份操作在数据库停机的情况下,这种备份最为简单,一般只需要复制相关的数据库物理文件即可。目前都要求系统7
×
24提供联机服务,通常备份都是联机进行的,即大多数的备份都是热备,后面的备份都是指热备。
[0003]传统数据库系统的存储有几类数据,用户数据以及用户数据的索引,索引通常采用B树、skiplist或者堆等存储组织形式,用户数据和索引数据都放到数据文件中;记录数据变更的REDO日志,主要用来异常恢复、一致性、持久化等;事务相关的UNDO日志,用来回滚事务必不可少的数据,保证数据库数据的一致性。
[0004]数据库的检查点功能针对数据库某个时间点(一般对应数据库的日志顺序号LSN),检查点保证该LSN值之前的所有数据变更都已刷盘。
[0005]传统数据备份,首先会执行一个检查点操作(将缓冲区中更新过的数据页刷盘),取得该检查点对应的LSN,并记录为Start_LSN;其次,备份数据库的用户数据文件(包括用户数据和索引数据);接下来备份数据库的UNDO日志文件;前面的文件都备份完成后,再次做一个检查点,取得该检查点对应的LSN,记录为End_LSN;最后,从REDO日志中备份Begin_LSN到End_LSN之间的REDO日志。
[0006]传统数据库中用户数据和以及索引数据是放到一起的,为了保证数据一致性,又引入REDO日志和UNDO日志。备份时检查点需要将大量更新过的数据页刷盘,需要消耗较长时间,根据不同的检查点实现,可能导致用户业务卡住一段时间,另外备份不但需要备份索引数据和用户数据,还需要备份REDO日志以及UNDO日志,增加了备份的空间消耗,并且延长了备份时间。

技术实现思路

[0007]本专利技术所要解决的技术问题在于,提供一种值日志系统中数据库备份的方法和系统,能够保证用户数据的完整性,利用备份恢复用户数据。
[0008]为解决上述技术问题,本专利技术提供一种值日志系统中数据库备份的方法,包括如下步骤:
[0009](1)产生检查点,获取值日志系统当前检查点对应的LSN;
[0010](2)获取LSM树快照,首先遍历LSM索引树并收集每颗子树,然后生成待备份的SSTable的链表;
[0011](3)在LSM索引树中,一个SSTable对应一个持久化的索引文件,从待备份的
SStable链表中取出一个SSTable,读取SSTable对应的索引文件的数据,打包并存储到备份文件中;依次类推取下一个SSTable备份,直到待备份的SSTable链表为空;
[0012](4)获取值日志系统的值日志文件,从开头位置一直读取到检查点对应的LSN偏移处,打包值日志数据,存储到备份文件中,完成值日志系统的备份。
[0013]优选的,步骤(1)中,LSN是数据库的递增的写入日志文件的日志顺序号,或者是值日志系统中的值日志文件尾部的偏移地址,此时偏移地址起到传统数据库LSN的相同作用。
[0014]优选的,步骤(2)中,LSM索引树的每颗子树包括检查点执行时内存中冻结的所有只读SSTable(Store String Table)生成的索引文件、检查点产生前已经存在于磁盘的所有索引文件。
[0015]相应的,一种值日志系统中数据库备份的方法对应的系统,包括:备份装置、检查点模块、SSTable子树收集模块、LSM子树备份模块和值日志备份模块;值日志系统备份装置收到备份请求,通知检查点模块,检查点模块生成检查点操作并获取对应的LSN;值日志系统备份装置调用SSTable子树收集模块,该模块生成一份LSM树快照,收集待备份的SSTable存入链表;LSM子树备份模块从待备份SSTable链表中取一个SSTable,读取SSTable对应的索引文件的数据,并打包存入备份文件,待备份完后,再从待备份SSTable链表中取下一个SSTable备份,直到SSTable链表为空,完成索引LSM快照的备份;值日志备份模块从值日志文件0偏移处读取数据,打包存储备份文件,直到检查点LSN对应的偏移地址为止,完成值日志系统的备份。
[0016]本专利技术的有益效果为:(1)保证值日志系统的数据安全,利用备份可以还原值日志系统的数据;(2)相比传统数据库,消除REDO日志、UNDO日志的备份,节省了存储空间,缩短了备份的时间;(3)值日志系统可以避免传统数据库联机备份时因检查点引发的业务系统卡顿,缩短备份时间。
附图说明
[0017]图1为本专利技术的方法流程示意图。
[0018]图2为本专利技术的系统结构示意图。
具体实施方式
[0019]如图1所示,一种值日志系统中数据库备份的方法,包括如下步骤:
[0020]S101,值日志备份工作线程接收到备份请求,执行一个检查点,取该检查点LSN(可以是值日志文件的当前偏移地址);
[0021]S102,值日志备份工作线程,获取当前索引LSM树的快照,收集每一颗子树SSTable,存储到待备份的SSTable链表中;
[0022]S103,值日志备份工作线程从待备份的SSTable链表中取出一个子树SSTable,每个SSTable实际上对应一个数据文件(数据组织形式可以是B树,B+树或者堆等),只要备份该数据文件的数据即可。然后取出下一颗子树SSTable备份,直到待备份的SSTable链表为空;
[0023]S104,值日志备份工作线程在备份完LSM的子树后,开始备份值日志文件(从偏移地址0开始一直到S101中LSN对应的偏移地址为止),至此完成值日志系统的备份工作。
[0024]如图2所示,一种值日志系统中数据库备份的方法对应的系统,包括:备份装置、检查点模块、SSTable子树收集模块、LSM子树备份模块和值日志备份模块;值日志系统备份装置收到备份请求,通知检查点模块,检查点模块按成检查点操作并获取对应的LSN;值日志系统备份装置调用SSTable子树收集模块,该模块生成一份LSM树快照,收集待备份的SSTable存入链表;LSM子树备份模块从待备份SSTable链表中,取SSTable进行备份,备份完后,再从待备份SSTable链表中取下一个,直到SSTable链表为空,完成索引LSM快照的备份;值日志备份模块从值日志文件0偏移处进行备份,一直到LSN对应的偏移地址为止,完成值日志系统的备份。
[0025]本专利技术中,值日志的备份保证值日志的数据安全,可以利用备份还原数据;值日志系统的备份可以节省存储空间,无需备份redo、undo日志;值日志系统可以避免传统数据库联机备份时因检查点引发的业务系统卡顿,可以减少备份的时间本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种值日志系统中数据库备份的方法,其特征在于,包括如下步骤:(1)产生检查点,获取值日志系统当前检查点对应的LSN;(2)获取LSM树快照,首先遍历LSM索引树并收集每颗子树,然后生成待备份的SSTable的链表;(3)在LSM索引树中,一个SSTable对应一个持久化的索引文件,从待备份的SStable链表中取出一个SSTable,读取SSTable对应的索引文件的数据,打包并存储到备份文件中;依次类推取下一个SSTable备份,直到待备份的SSTable链表为空;(4)获取值日志系统的值日志文件,从开头位置一直读取到检查点对应的LSN偏移处,打包值日志数据,存储到备份文件中,完成值日志系统的备份。2.如权利要求1所述的值日志系统中数据库备份的方法,其特征在于,步骤(1)中,LSN是数据库的递增的写入日志文件的日志顺序号,或者是值日志系统中的值日志文件尾部的偏移地址。3.如权利要求1所述的值日志系统中数据库备份的方法,其特征在于,步骤(2)中,...

【专利技术属性】
技术研发人员:王学海付新姜久文许雄凌张静修赵远方沈忱
申请(专利权)人:达梦数据技术江苏有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1