谈谈容灾

今天来谈谈关于容灾的一些事情,其实网上很多关于容灾的方案、白皮书等等,各个厂家也有自己主推的容灾工具。在这里,我结合自己的工作经验,简单的谈谈我理解的数据库容灾。

容灾,要考虑投资额度,能承受多少最大的支出;要考虑能接受的损失范围,保证我最小业务运行有哪些条件;要考虑容灾的距离,是本地容灾还是异地容灾,设备之间用什么传输方式;要考虑容灾的级别,是数据库级的,os级的,还是存储级的;要考虑业务数据的大小和允许恢复的时间。

比如设计一个容灾方案,首先考虑数据量有多大,能否承受多少的数据丢失,确定保证最小业务运行的条件,其次根据需求,考虑我的投入需要多少,根据投入估算出需要那些硬件设备,最后,根据以上条件,分不同层次的进行容灾。

对于数据量较大的库,我们首先在数据库层面做成rac,在数据库层面做到failover,由于rac使用大部分的共享存储,在存储上,我们可以使用厂家的一些底层数据同步技术,保证存储的一致性,如HP的continuous access(CA),实时一致性地在存储级将主存储的数据同步到备的数据存储中。并且,在业务不繁忙的时候,将数据库的数据文件至于backup模式,在存储级实现再次备份(HP BCV),建议一个一个的做,做完一个数据文件,恢复到read write模式后,做下一个数据文件。如果是远程的异地容灾,建议在远程的被数据存储上,再建一套rac,虽然主存储上的rac可以去连接备存储,但是避免为了远程传输网络的波动,建议在备存储上也建一套rac。

对于数据量中等库,可以用DataGuard(DG)技术在数据库层面实现容灾。实施DG的时候,对于已经上线的系统,需要停库进行文件的复制,对应用的影响没有像CA一样对应用透明,需要在上线初期进行规划。并且从维护的成本上来说,DG需要关注其运行状况,观察standby数据库是否同步成功,维护代价比较高。做了DG,也是从容灾的角度上考虑,但是还没有实现高可用,因此还需要在主机层面实现HA,对于不同厂家的主机,可以用不同的HA方案,如HP的HA/SG、IBM的HACMP。

对于小型的数据库,可以首先确定保证最小业务运行的底线,用exp/imp的方式,定期(如每天一次),当然,小型数据库也需要在主机层面实现HA,但是如果仅仅使用主机层面的HA,没有考虑到存储损坏的可能性,那就不叫容灾了。之前谈到的第一种是用CA方式实现,第二种是用DG的方式实现,对于小型数据库,在这里,我们用了另外建一个容灾库,将主库的信息exp/imp的方式来实现了。用这种方式实现,只能是作为一个最后的底线来实施,因为从上次备份到如今的数据会丢失,而且只能实现最小的业务功能(即只能查询,不能有更新或者删除插入功能)。

此外,对于OLAP的系统,如果主库的更新操作不是很多,我们还能利用MV log的方式利用物化视图定期将主库的信息刷新到容灾库中。

目前市场也也有不少第三方的数据库层面的容灾工具,DSG、sharplex,bakbone等等,价格不菲,这里就不一而举了。

上面就是我对数据库容灾的一些理解,说的不好,欢迎大家拍砖了,谢谢~~~

相关文章

2条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据