数据库的容灾是容灾系统最重要也是最复杂的容灾方式,本文是通过描述EMC对oracle的容灾来解释如何在容灾系统中保证数据库的完整性问题。
在开始备份之前,EMC TimeFinder 会对Oracle 数据库数据所在的PCV做一个镜像,这个镜像叫做BCV,它们都在EMC的阵列上配置。在这个数据镜像生成之前,数据库的数据库事务必须是在一致性和完整性的状态,NetBackup for Oracle Server Free Agent会对 SUN E15K服务器上的Oracle数据库进行系统静默,也就是让数据库应用及其进程暂停直到数据库事务一致性和完整性的状态。然后,备份客户端(SUN E15K) 的NetBackup Array Integration Option会调用Symmetrix TimeFinder API,把源数据和镜像BCV切开,这时BCV上的数据就处于一致性的状态, 并且解冻Oracle数据库。接着NetBackup Server Free Agent 对BCV 的镜像数据进行映射(Mapping)处理,生成数据的物理地址映射表,将其转交给独立备份服务器或者数据搬移器。此时,NetBackup备份服务器SUN E450会依据得到的数据物理映射表,对BCV 进行数据块级别的备份。在备份完成之后,NetBackup Array Integration Option会调用Symmetrix TimeFinder API对源数据和镜像BCV进行重新同步。这样,备份的数据流不用经过备份客户端就可以完成数据备份,有效地减少了备份作业对业务系统运转的影响。
从上面的描述,我们了解对于数据库的容灾系统来讲,最重要的是数据库的完整性,在灾难发生的时候,少量数据的丢失是允许的。但数据库的结构不完整意味着数据库无法启动,也就意味着整个系统无法使用。这在很多行业里是非常严重的事情。
所以现在的主流容灾系统还是以逻辑快照按时间点复制的方式最为成熟,因为在现有的系统中还无法保证同步的数据库完整性。