八、数据库的灾难防护
1、数据库
数据库管理系统提供一些基本的功能
数据安全(提供有效的备份和恢复功能)
数据保安(设定访问权限)
数据共享(多个用户和应用程序同时访问数据,不影响数据完整性)
数据组织(文件的数据结构化)
数据库数据模式
分级模式:数据项存在父项和子项的关系.
网络模式:在网络数据库中,数据项之间有更多的关系,这些关系可用图形或网络形式来表示.
关系模式:数据项保存成行,象表格一样.
关系模式
SQL(结构化查询语言)
2、数据库灾难
从数据库角度来看,灾难就是导致数据丢失的事件。
其原因可能式人为错误和应用程序错误,或者硬件,软件和环境故障
人为和应用程序错误
系统和环境故障
3、数据库恢复
定期的数据库备份防护数据库灾难的最基本和最有效的方式
数据库事务处理
一个事务处理就是一个交易活动引起的一系列数据库操作
数据库崩溃处理
通过永久性日志的方式来记录打算执行和已完成的操作。在崩溃恢复的时候,数据库管理系统应可以重新回放日志来恢复数据。
文件系统缓存和数据库恢复
系统崩溃时候,文件系统的缓存还没有写到缓存。这种情况,数据库管理系统的恢复流程必须将其日志中的更新重新用到数据库。就是说,系统崩溃时,已确认事务处理的流程不会丢失.
存档日志:长时间数据库恢复
如崩溃前某次全备时间点的所有存档日志都可以使用,那么就可以通过下面步骤恢复:
恢复备份拷贝
利用已恢复拷贝,按顺序重新回放系统拷贝
利用已恢复拷贝,重放故障发生时间点的数据库日志状态
数据库重放记录在归档日志中的事务处理和现时日志,能够将数据库镜像恢复到故障发生的状态,这种方式回放叫数据库前滚。
4、数据库备份技术
离线数据备份
冷备:在一些老式的数据库管理系统中,冷备不能前滚
在线数据库备份
热备,如Oracle的rman和Sybase的“dump database”
逻辑数据库备份的主要缺点:通常不能使用快照技术来减少备份对应用的影响。
通过拷贝数据库所包含的容器文件,数据库容器文件并不是随时都可以进行拷贝,因为数据库管理系统在不断更新容器文件,使用的文件拷贝可能包括未完成的事务处理,不能将数据库恢复到一致性状态。
数据库管理器的静态状态
ORACLE将表空间存放在备份模式中进行备份,但数据库在不断更新,这样备份和数据就可能不一致。然而恢复却可以一致,是因为在线备份进行时,额外信息也会被数据库管理器记录下来。重新回放数据库在备份模式下所记录的日志,可以将数据库恢复到一致性状态。
其他数据库通过暂停事务处理并将其缓存,利用快照进行的数据库容器文件的备份便是数据库唯一的镜像。
数据库增量备份:可以是逻辑的或者是物理的
逻辑增量备份:存档数据库日志是数据库逻辑增量备份的一种方式。
通过恢复数据库的全备,再利用归档日志将数据库恢复到最新的存档日志,将数据库恢复到最新存档时刻。
物理增量备份:包含数据库容器文件的文件系统的增量备份可以有效的创建数据库的物理增量备份。
基于文件(文件系统)的增量备份通常等同与数据库的全备份
5、从备份中恢复数据库
灾难恢复的一开始就合并使用备份和日志,恢复数据库的基准镜像。对与不可预知的物理灾难,在基准镜像上执行数据库的完全恢复(日志重新回放)。
6、检验数据库备份
数据备份无效的原因:
元数据(例如oracle控制文件和sql服务器主数据库)缺失
物理备份过程数据库处于非静止状态
一个或多个必须的数据库文件从备份中丢失
数据库毁坏后才开始备份
无效的备份比不备份更糟糕,无效的备份造成一种安全假相
管理数据库日志(这个非常重要)
数据库的存档日志通常保存在备份保存的位置。在确定了数据库日志的存档频率后,数据库管理员必须平衡恢复点现时性和资源消耗的关系。
7、存储冗余和灾难防护
冗余在线存储可以通过消除造成数据库停机的单点故障,并且消除许多停机实例
RAID0和RAID5就是应用的一个实例
8、系统冗余和灾难防护
共享数据集群:是指两台或多台计算机与一个带有数据库的公用存储设备直接相连
主动-被动数据库集群配置:有一个控制数据库的主服务器,其他的都是被动的,当服务器发生故障的时候,有一台备用服务器变成主服务器来控制数据库。通过集群软件和数据库代理之间的相互作用来完称。集群代理可以在数据库管理器和集群软件之间建立连接,以提供启动,停止,监控服务。
主动-被动数据库冗余其主要的步骤:
1、集群代理检测到故障
2、次服务器检测到主服务器的故障
3、主服务器上的数据库代理会检测到数据库故障(代理会尝试重启数据库),重启失败,代理会强行关闭数据库,集群软件卸载文件系统,以释放磁盘空间。
4、次服务器取得数据库ip地址的控制权,充当主服务器。
5、新的服务器导入(export)磁盘,恢复卷,设置文件系统,并恢复数据库。
6、新的主服务器代理重新启动数据库,使之可用。
主动-被动数据库集群配置建议
使用主动-被动式数据库集群可以有效的防御灾难,但需要遵守下列简单规则
1、当服务断掉时,客户机软件应当不断重试是不是失败,这样在故障冗余之后可以重新连接
2、共享磁盘应该镜像
3、专用网络应该冗余
4、客户机访问网络组件应当冗余
5、文件系统应当做好日志,以便更快恢复
6、数据库恢复程序(包括故障日志),应定期测试
7、在支持多个被动服务器的集群中,集群管理器的配置应当选择最空闲的被动服务器作为冗余目标
自动和自动式数据库复制:
ORACLE的并行服务器(OPS)和实时应用集群(RAC)
这些主机可以同时访问共享磁盘,这就需要一个分布式的锁管理器来协调数据库管理器实例的访问共享数据。以便每一个实例都是数据库独立部分的首要访问者。这种方式一般都需要使用裸设备,一般只限与硬件存储冗余。
9、数据库复制
用日志传输进行复制
数据库恢复的最基本的问题是如何保证恢复站点的数据是最新数据。或许最简单的办法就是定期的将存档日志物理传送到恢复站点。
数据库管理器复制
大多数的数据库管理器支持实时复制,一对多或者双向复制。
数据库的存储复制
按照卷级或者文件系统进行复制
卷复制在数据中心和站点采用同样顺序的写操作。这一点保证了副本可以作为数据库恢复的基础,因为副本的内容不能代表实际数据库以前的某一状态。
存储卷的复制可以同步或者异步
1、在同步的复制中,写操作的结果并不是反映在数据库管理器中,直到所有恢复站点已经受到并确认到它们。
2、使用异步复制中,在次卷的写操作运行有一定数量的延迟,而不会影响数据库管理器或应用的性能。
3、尽管如此,有一种技术可以在数据库活动的静止时刻,已复制镜像可以被定期分离。
SRDF的分离
复制延时
数据库管理器和存储复制,都会将人为的误操作和应用错误扩展到恢复站点。但如果主站点和恢复站点之间存在一个可配置延时,那么数据库副本就可以用来恢复某些逻辑错误。
全域集群管理
两个或多个集群,可以通过广域网连接到全域集群。
10、数据库可恢复性分级
数据库灾难恢复技术:
定期数据库备份和日志存档
磁盘镜像
局域集群
数据库复制
全域集群
数据库灾难恢复技术都必须和前面所列的技术合并使用,例如磁盘镜像必须和定期数据库备份和日志存档合并使用。
根据不同的RTO(恢复时间目标),决定使用不同的技术。
各种技术的优势和需要
1、数据库备份和已存档日志必须保存在离数据中心有一定距离的地方。高级备份软件应当具有自动安排块级增量备份等功能,可以降低管理成本,缩小备份窗口,最小化恢复时间。
2、通过镜像硬件和网络设备,磁盘镜像可以大大减少硬件故障引起的灾难。
3、通过集群可以提高数据库的信息服务的可用性,降低单点故障。
4、要从导致站点宕机的灾难恢复过来,数据库必须复制到远程站点。
5、当使用全域集群来调整多个互连站点的数据库和应用的可用性,便可以实现数据库的最高可用性。