您的位置:  首页 > 技术 > 数据库 > 正文

基于分布式数据库本身的定时备份方法

2022-06-10 10:00 https://my.oschina.net/u/5148943/blog/5536651 浪潮云溪数据库 次阅读 条评论

背景技术

 

在大型分布式数据库中,对于数据的保护显得尤为重要,备份则是对数据进行保护的一种合理手段。若要对不断更新的数据进行保护,则可以在指定时间点对数据库数据进行备份。这样,当数据库发生故障时,可以及时还原到最近一次备份的时间点,避免数据大规模丢失。目前已知对数据库进行备份主要采取以下两种策略:

(1)利用操作系统本身的定时系统,编写脚本,定时将数据库物理存储数据进行复制。

该方案通过利用操作系统本身的定时系统,编写脚本,便可在脚本指定的周期时间进行定时操作,将数据库物理存储的数据进行复制,保存于其他安全的物理存储设备中。

(2)利用操作系统本身的定时系统,编写脚本,定时执行SQL备份语句。

该方案通过利用操作系统本身的定时系统,与数据库本身的备份功能相结合,定时执行SQL备份语句, 则可在脚本指定的定时周期进行数据库数据备份。

方案(1)(2)均强依赖于操作系统,局限性高,需要熟悉对应操作系统脚本编写的人员进行脚本的编写,且此类方式定时备份的相关信息不够直观、不易保存。同时,方案(1)为物理备份,必须停止数据库才可进行复制,很多业务场景不适用。方案(2)虽摆脱了此种限制,可以应用于在线业务,但仍受限于操作系统及脚本等方面。

 

云溪数据库中的定时备份

云溪分布式数据库提供了一种定时备份方法。此种方法可通过数据库本身定时对数据库数据进行备份,避免数据的大规模丢失,保障数据的安全性。同时,相比于其他类似技术,该方法解决了定时备份任务强依赖于操作系统及脚本的问题,使得定时备份变得更为灵活且容易实现,更利于数据库管理人员操作使用。另外,备份方式使用数据库本身的逻辑备份方式,属于逻辑备份而非物理备份,可以解决备份时需要停止数据库业务的问题,拓宽了业务场景的同时保障了数据的安全可靠。

云溪数据库能够在不停止业务的情况下按照指定的周期对数据进行备份,具体过程如下:

步骤1-用户执行创建定时备份任务的SQL语句,其中包括备份目标、备份周期和备份位置等信息;

步骤2-数据库解析SQL语句,将关键信息写入数据库内定时备份的系统表中,同时创建出后台执行的定时备份任务,结合附图1;

步骤3-数据库按照数据库中设置的时间间隔,每隔该时间,对系统表进行一次扫描,筛选出该执行的备份操作并执行,结合附图2;

步骤4-若执行备份成功,则继续执行步骤3;若不成功,则停止定时备份任务并提示数据库使用者,同时将问题信息写入日志。

进一步的,步骤1用户执行创建定时备份操作,设置备份的周期,及将指定的数据库(模式、表)备份到指定的节点、分区、落盘位置等。

随后执行步骤2,数据库服务解析SQL语句生成语法树,再通过语法树生成执行计划,将关键信息写入数据库内定时备份的系统表中,其中具体步骤包括:

步骤2.1-用户输入创建定时备份的SQL语句后,解析器通过词法解析,句法解析和语义解析,将语句生成语法树。

步骤2.2-优化器由语法树生成逻辑计划,再由逻辑计划生成具体执行时的物理计划。

步骤2.3-基于执行计划,将备份的关键信息写入数据库内定时备份的系统表中,并在后台创建一个定时备份进程,用于定时扫描该系统表,结合附图1.

 

图1

 

数据库内定时备份的系统表中具体信息例如:

{

schedule_id 定时备份任务唯一标识

schedule_name 定时备份任务名称

created 定时备份任务创建时间

owner 定时备份任务归属用户

schedule_expr  定时备份周期表达式

next_run 下次执行备份的时间

target 定时备份任务的对象

}

随后执行步骤3:数据库按照数据库中设置的时间间隔,每隔该时间,对系统表进行一次扫描,筛选出该执行的备份操作并执行,其中具体步骤包括:

步骤3.1-按照设置的时间间隔,扫描定时备份的系统表,查询是否应该执行该次备份。具体执行判断示例为:

将当前时间time.now与系统表中对应备份的next_run进行对比判断,若当前时间大于等于next_run,则应当执行该次备份,若小于,则无需执行。

步骤3.2-若满足执行条件,则执行该次备份并在定时备份的系统表中更新该次备份的定时信息,若满足,则不执行及更新,等待下次扫描,结合附图2.

 

图2

 

具体更新示例为:执行备份,更新该次备份的定时信息,即更新系统表中对应备份的next_run值,其应当为当前next_run值加schedule_expr换算出的时间周期。

随后执行步骤4:执行步骤3中扫描出的满足条件的备份,若不成功,则停止定时备份任务并提示数据库使用者,同时将问题信息写入日志。

 

优势

此种定时备份方法不依赖于操作系统及脚本,而是通过在数据库内输入SQL语句设置定时备份任务,使得定时备份变得更为灵活且容易实现,更易于数据库管理人员去制定定时备份策略、设置定时备份方式;通过备份,对数据进行保护,避免数据的大规模丢失,保障数据的安全性。同时,此种定时备份方法执行的备份是基于数据库内部的备份,而非对外在数据进行拷贝,故而可以在不停止数据库的同时对数据进行备份,不会影响正常业务的开展。

展开阅读全文                                    
  • 0
    感动
  • 0
    路过
  • 0
    高兴
  • 0
    难过
  • 0
    搞笑
  • 0
    无聊
  • 0
    愤怒
  • 0
    同情
热度排行
友情链接