/ 中存储网

备份关键和复杂的数据库必要性

2020-10-23 12:27:03 来源:中存储

数据库,也称为结构化数据,是任何数据中心的重要组成部分。尽管数据库通常不占给定数据中心中所存储的太字节的很大百分比,但它们确实具有对任务关键型数据的很大百分比。了解它们的独特结构和操作是对其进行备份的关键。

备份关键和复杂的数据库必要性

由于三大挑战,无法像非结构化数据一样备份结构化数据。首先,数据库通常存储在不断更新的数据文件中,只要某些文件正在对数据库进行更新。这意味着您不能像其他任何文件一样备份它们。

其次,大多数数据库将具有某种类型的日志,可以重播这些日志以在时间点还原后还原事务,或者在崩溃后回滚部分完成的事务。

第三,典型的还原是从最近的备份中还原数据文件,然后是从日志还原,以便将数据库还原到尽可能新的状态。该恢复点目标(RPO)成为可能与大多数的备份系统,可能超过24典型的单步恢复时间,根本就不是关键任务数据库不够好。

正确备份数据库的关键在于了解数据库如何解决这些挑战。

数据库模型

至少有13种不同的数据库模型,要知道如何备份数据库模型,首先要知道要备份的数据库类型。

这些模型包括:关系(最常见),键值,时间序列,文档,图形,搜索引擎,宽列,面向对象,RDF,多值,本机XML,导航和事件。以下仅列出了最受欢迎的模型,以及一些其流行的数据库产生了大量备份问题的模型。

关系型

关系数据库管理系统(RDBMS)是大多数人所说的数据库一词的想法:一系列具有定义的架构(表布局),记录(行)和属性(值)的表。示例包括Oracle,SQL Server,MySQL和PostgreSQL。这些数据库在使用查询语言之后通常称为SQL数据库。

核心价值

一个非常简单的NoSQL(不仅是SQL)DBMS,它由键和值组成,如果您知道键,则可以在其中查找值。流行的例子是Redis和DynamoDB。

时间序列

一个NoSQL数据库专门设计用于处理时间数据,因为每个条目都有一个时间戳。流行的Prometheus数据库就是一个例子,并且在Kubernetes中使用了很多。

文件

无模式的NoSQL DBMS专为存储文档而设计。记录不需要符合任何统一的标准,并且可以存储非常不同类型的数据。JSON通常用于在此类数据库中存储文档。MongoDB是最流行的数据库,仅支持文档模型。

宽柱

另一种无需模式的NoSQL DBMS无需宽泛的模型就可以存储大量的数据列而无需预定义的模式。列名和键可以在整个数据库中定义。Cassandra是这种类型的最著名的数据库。

数据库术语

数据库术语也很重要,因此下面是重要术语的列表。并非所有数据库都使用相同的术语,但是它们应该具有相似的术语,表示相同的事物。NoSQL数据库通常使用非常不同的术语,或者可能缺少与所讨论项目相似的术语。

数据文件:数据文件是数据库存储其数据的位置。这可能是原始设备(例如,Linux中的/ dev / hda1),也可能是“煮熟的”文件(例如,/ sap / datafiles / dbs06.dbf或c: MySQL datafile.dbf)。在这一点上,大多数数据库都将熟文件或常规文件用作数据文件,并且每个数据库大多数都具有多个文件。

桌子:这里的东西有些晦暗。在SQL关系数据库中,表是一堆相关值,其行为类似于虚拟电子表格。NoSQL数据库可能有相似之处,也可能没有。

表空间:表空间是放置表的空间,是一个或多个数据文件的集合。如果您的数据库没有表,则它可能没有表空间。

分区:现代数据库可以在多个资源(包括多个表空间)之间划分和分散表。

分片:分片将分区扩展到另一个级别,这是大规模扩展数据库的关键。分片甚至可以将表的碎片(碎片)放在不同的节点上。

主数据库:主数据库跟踪所有数据库和数据文件的状态。如果允许使用多个数据库,则也需要对其进行跟踪。

事务:事务是数据库中的一项活动,可更改一个或多个表中的一个或多个属性。简单的事务会更改一个属性,而复杂的事务将更改多个属性作为单个原子操作。NoSQL数据库倾向于使用简单的事务,并且许多使用它们的人甚至都没有想到它们的事务。

事务日志:事务日志记录每个事务及其更改的元素。在系统崩溃或还原到撤消或重做事务后使用此信息。

一致性模型

数据库有两种非常不同的方式来确保对于数据库的所有查看者而言,插入或更新的数据库数据的视图都相同。这些被称为一致性模型,它们会影响备份和恢复。

第一个是即时一致性,也称为强一致性,它可以确保所有用户在同一时间看到相同的数据,无论他们在何处或以何种方式查看数据。大多数传统的关系数据库都遵循此模型。

第二种模型是最终一致或弱一致的数据库,这可以确保给定的属性最终对于所有查看者都是一致的,但这可能需要一些时间。最终一致性的一个很好的例子是DNS系统内部,它必须等待DNS记录的生存时间到期,然后才能更新有关域名的信息。这最多可能需要72个小时。

什么,如何以及为什么要备份?

如果您负责备份数据库,则需要了解它的构建方式和工作方式。您需要了解它在哪里存储数据(例如数据文件),是否使用复杂或简单的事务以及在何处存储这些事务的日志。您将需要知道如何对存储的数据和事务日志进行一致的备份。

您还需要了解数据库的分布情况。它是否已分区,但全部都在一台主机中,还是在多个或几百个主机中分片并散布了?如果是后者,则很可能要处理最终一致的数据库。要获得分布在数百个节点上的一致的数据库快照将非常具有挑战性,而恢复它也同样具有挑战性。

有些人可能认为不需要备份在多个节点之间使用复制的最终一致的数据库,但确实需要备份。虽然可以防止节点故障,但绝对不能防止人为错误。如果删除表,则复制的形式无关紧要。您将需要还原它。