03数据库系统
09-数据库安全与备份
2021-08-01 321 1
简介 数据库安全与备份知识介绍
数据库安全防护措施
冷备份和热备份
冷备份也称为静态备份,是将数据库正常关闭,在停止状态下,将数据库的文件全部备份(复制)下来。
热备份也称为动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份下来。
备份的分类
完全备份:备份所有数据
差量备份:仅备份上一次完全备份之后变化的数据
增量备份:备份上一次备份之后变化的数据
(1)静态海量转储:在系统中无运行事务时进行,毎次转储全部数据库
(2)静态增量转储:在系统中无运行事务时进行,每次只转储上一次转储后更新过的数据
(3)动态海量转储:转储期间允许对数据库进行存取或修改,每次转储全部数据库。
(4)动态增量转储:转储期间允许对数据库进行存取或修改,毎次只转储上一次转储后更新过的数据
日志文件:事务日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。事务日志归档后就是归档日志,一般数据库产品中,事务日志的空间是循环利用的, 并且会有一个进程或线程实时的将事务日志转储到归档日志空间。
故障的种类
事务故障:事务在运行至正常终止点前被终止, 此时可能出现不正常的状态; 由于事务程序内部原因引起的,有些可以预测,如金额不足,有些不可预测如非法输入、运算溢出等
系统故障: 软故障
造成系统停止运转的任何事件,此时系统可能需要重新启动
例如: 特定类型的硬件错误、操作系统故障、 DBMS代码错误、 突然停电等
介质故障:
外存故障,例如磁盘损坏、磁头碰撞、瞬时磁场干扰等
这类故障将破坏数据库或者部分数据库, 并影响正在存取这部分数据的所有事务,日志文件可能也会被破坏
故障与恢复
数据库的故障恢复
Undo: 撤销事务, 将未完成的事务撤销,使数据库恢复到执行前的正确状态
Redo: 对已提交的事务重新执行
事务故障恢复步骤
1. 反向扫描日志文件, 查找该事务的操作;
2. 对该事务的操作执行逆操作,也就是将日志记录更新前的状态写入数据库;
3. 继续方向扫描日志文件,并做与2同样的处理。
4. 一直读到事务的开始标识, 事务故障恢复完成
事务故障的恢复由系统自动完成, 对用户是透明的
系统故障恢复步骤
1. 正向扫描日志文件, 找出故障发生前已经提交但未写入数据库数据文件的事务(这些事务有BEGIN TRANSACTION标识也有commit标识), 将其写入重做(REDO)日志队列。 同时如果是未提交的事务(只有begin TRANSACTION没有commit的事务),将其写入到撤销(UNDO)队列。
2. 对UNDO队列的事务反向执行逆操作,撤销事务
3. 对redo队列中的事务执行正向操作,重做事务。
系统故障恢复是在系统启动之后自动执行的。
发生系统故障时,如突然掉电,对于数据库日志中有BEGIN TRANSACTION标识,但是没有COMMIT标识的记录,可能有两种状态:1.发生checkpoint,数据已经写入数据文件,但是未及时在日志中标记该记录已经提交,突然掉电; 2.未发生checkpoint ,此时数据库文件未涉及该事务相关改动。
介质故障的恢复步骤
1. 装入最新的数据库备份副本, 是数据库恢复到最近一次转储时的一致性状态。
2. 转入相应的日志文件副本,重做已完成的事务
介质故障的恢复需要DBA的介入:
DBA只需要重装最近转储的数据库副本和有关的各日志文件副本,然后执行DBMS提供的恢复命令; 具体的恢复操作扔由DBMS完成。