如果一个数据库和它的联机日志被损坏了,那么即使马上进行了严密的数据库备份和日志归档,数据也极有可能丢失。因此,一个完整的数据库融灾策略的一个重要部分就是对联机的数据库日志进行复制,这样在进行修复处理时就可以及时利用这些复制的内容准确无误地修复数据库。联机数据库日志可以通过有限的距离进行镜像。如果距离过长,数据库管理员可以通过多路转接技术或者通过企业网络同时进行本地和远处的日志拷贝。多路转接技术通常比镜像和低水平复制(如数据卷)的速度要慢一些,因此如果可以的话要尽量选择后一种方式。
最高级别的数据库实时恢复是在每次事务提交的之前同步进行数据库日志的传输和归档。换句话说,必须要在日志已经被转移到另外地点后,才进行事务的提交。显而易见,这种选择执行起来的代价是非常昂贵的,因而在实践中较少采用。
数据库复制
周围环境的灾难,例如:地震、洪水,或者暴乱会使整个数据中心及周围环境彻底丧失数据服务的能力。为了恢复一个灾难中的数据库,必须有一个灾难破坏范围之外的一个数据的冗余拷贝,并且当恢复中心数据恢复完毕后,必须可以响应客户端的请求。
使用传输日志方法的复制
保证数据库可恢复的环境容灾的最基本挑战就是如何保证容灾地点具有最新的数据。或许实现这种状态的最简单办法就是在数据中心与容灾地点间物理的传送归档日志,例如,使用快递或运输服务。在恢复地点,日志被备份数据库(有的叫做备用数据库)重新应用来实现数据“刷新”。对于应用来说,如果可以容忍一整天的数据丢失,那么这种简单的方法也许就足够了。它的主要缺点就是数据刷新和重路由客户端请求的劳动强度比较高,很容易出现人为错误。
对于简单应用和小型数据库,日志传输和数据库刷新技术可以通过在网络上执行定期的日志传送和刷新任务来自动完成。
数据库管理器复制
今天,大多数数据库管理器支持精密的实施复制,允许例如一对多、双向的复制。也可以是数据库子集的复制,只将感兴趣的数据复制到目标端。在分布式数据库最初设计时,数据库管理器复制就可以用来实现容灾复制。
数据库复制需要在主站点和恢复站点间有一个高性能网络的连接,但即使这样也不能实时同步,这意味着在数据库完全将数据反映到备用数据库有一个时间延迟。一些数据库支持同步复制,虽然解决了上面的问题,但是它明显减低了主数据库的性能,因为只有当所有的复制任务全部结束后,数据库才能继续接收数据。
针对数据库的存储复制
数据库复制要求具有专门的数据库管理技术。额外的,一些基于数据库的信息服务在数据库之外存储了额外的数据。为了实现灾难恢复,所有的应用信息都必须复制到远程站点。存储复制是针对数据库复制的一个简单可行的办法,它可以将数据库数据和其它数据全部从数据中心复制到恢复站点。
数据库的内容可以在卷一级或者文件一级进行复制。稳定的、高性能的文件系统复制也相当优秀。可靠的高性能卷复制能够使远程复制数据文件、在线日志和归档日志变得非常简单。如果所有的数据文件、日志文件,及其它的辅助数据都存放在一个独立的文件系统或独立的卷中,复制就会变得非常简单。
卷管理器对数据库恢复的非常有利,原因在于它在数据中心与容灾站点执行同样顺序的操作。如果没有这个特点,它的数据不能够保证与实际数据库先前的状态一致,也就是说复制就不能作为数据库恢复的基础。
复制的延时
无论数据库复制还是存储复制,都会将认为无操作和应用错误复制到恢复端。例如,在主站点错误的删除了一个表,那么恢复中心也同会删除,因此使用复制无法纠正错误。
如果在数据中心与恢复中心的数据刷新上存在一定的可配制的延时,数据库复制就可以用来一些逻辑错误。例如,如果复制日志在应用到备用数据库前保留一小时,而逻辑错误在一小时之内被发现(通常是这样),这样错误还没有反映到复制数据库中。可以立即将复制停止,然后可以使用备用数据库恢复主数据库。
全局群集管理
因为更加坚固,在群集上,数据库应用可以同时运行在主站点和备用站点。在一个单独的数据中心内两个或更多的群集计算机可以通过一个大范围的网络连接成全局群集,他们是一个平等的高可用系统。当配制了多个恢复站点,或者一个恢复站点复制到第二个恢复站点,可以使用全局群集进行复杂的管理。
在错误切换的复杂性上和站点切换操作的限制性上,全局群集不同于本地群集。与本地群集相比,全局群集的错误切换往往不是自动的,管理员的决定通常需要经过严肃的考虑。全局群集的任务就是方便的提供一个分布的高可用服务器的全局的视图,并且可以通过一个单独的点来进行控制。
概要:数据库恢复层次
下面列出的数据库恢复技术是按照他们所能够提供的保护能力的顺序列出的,也同时是使用他们所需要的资金,方便程度,和技术复杂性的排列顺序。每一种技术都必须与他前面的技术共同使用。例如,磁盘镜像必须伴随着数据库备份和日志归档。
正规数据库备份和日志归档
磁盘镜像
本地群集
数据库复制
全局群集
对于希望恢复时间(RTO)时间在几个小的内的企业,正规的数据库备份和日志归档也许就能满足。数据库备份和归档日志应该被保存在离数据中心有一定距离的地方。高级的备份软件的特性,如自动的定期的块增量备份可以减少管理成本,缩短备份窗口,以及最小化恢复时间。
通过简单的镜像硬件和网络,镜像数据库存储dada减少了因为硬件故障所引起的数据库停机。也可以通过剥离镜像的备份提高数据库的可用性。
可以通过群集技术提高数据库级信息服务的可用性。一个本地群集可以使由于系统的单点而出现故障的可能降到最小。当错误引起临时的损耗,服务恢复时自动的。在共享数据的群集中,损耗窗口可以为零。在群集中,备份可以运行在导入了数据库服务器镜像数据的辅助服务器上。
为防止站点实效而进行的灾难恢复中,数据库必须复制到远程站点。数据库复制的最简单方法就是将归档日志传送到远端,然后在备用服务器上重新应用。这种技术丢失的数据数量是固定的。不能容忍在灾难中丢失数据的企业应该使用数据库或存储复制。
最高的数据库可用性应该使用全局群集来完成,它在多个互相连接的站点中调整数据库和应用的可用程度。
弹性数据库通过不同方法使用冗余拷贝。数据库可以通过额外的拷贝提高访问性能。存储数据库数据的磁盘可以被镜像来提高弹性。实时备份可以用来避免灾难和故障。事务日志可以使导致数据错误的时间前滚。最后,完全的数据镜像可以在远端保存一份数据来避免灾难。高级的数据库管理器可以自行分发它们所管理的数据以提高数据库弹性和性能。