共计 2051 个字符,预计需要花费 6 分钟才能阅读完成。
背景技术
在大型分布式数据库中,对于数据的爱护显得尤为重要,备份则是对数据进行爱护的一种正当伎俩。若要对不断更新的数据进行爱护,则能够在指定工夫点对数据库数据进行备份。这样,当数据库产生故障时,能够及时还原到最近一次备份的工夫点,防止数据大规模失落。目前已知对数据库进行备份次要采取以下两种策略:
(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 语句设置定时备份工作,使得定时备份变得更为灵便且容易实现,更易于数据库管理人员去制订定时备份策略、设置定时备份形式;通过备份,对数据进行爱护,防止数据的大规模失落,保障数据的安全性。同时,此种定时备份办法执行的备份是基于数据库外部的备份,而非对外在数据进行拷贝,故而能够在不进行数据库的同时对数据进行备份,不会影响失常业务的发展。