金融客户 采用本地RAC库+本地ADG库+远端ADG库 的架构,业务通过一些控制将读写型的连接放到RAC库,将一些查询操作放到本地ADG库。
请问:
1、是否要设置本地RAC库和本地ADG库的日志应用时延,以防止本地RAC库出现逻辑错误后,本地ADG库可以回滚?
2、如果客户在账户中存了1w块钱,但是在ADG库上没有及时查询出来,那么势必会造成投诉。 在这种情况下,如何设置主库和本地ADG库的时延呢?
首先问题1和问题2是相悖的。
作为金融类的应用,对于你的问题2可以设置ADG的三种模式之 Maximum Protection,最大限度的保护数据不丢失,并且一致,不会存在客户在账户中存了1w块钱,但是在ADG库上没有及时查询出来。
如果考虑回滚其实有很多其他方式避免,比如加大相应的undo大小和保存时间,还可以设置Flashback Data Archive,对于某些表设置相应的历史数据保留策略,可以片面的理解成加强版的undo。
@韩成亮:
其实我想表达的是,在主库上进行的交易同步到本地ADG库会有一个延时,如果刚好在某个点,客户查ADG库,发现交易数据没有更新过来,那势必会投诉。
对于这种情况,我们在业务或者架构上怎么去设计?
本地由于你做了读写分离,为了避免未正确配置的连接读到了延迟的本地ADG库。所以本地ADG库不要设置延迟应用。
远端的ADG库可以日志应用延迟。或者在本地搭建一套不给实时业务使用的ADG延迟应用库(但是可以在上面备份、历史数据查询等)
对于第一个问题不用设置本地备库的应用时延,在远端ADG库开启闪回就可以了,很方便,我们现在就用的这种方案。第二个问题本地ADG备库肯定要使用最大保护模式,最大保护模式数据必须写到备库返回给主库事务才会提交,所以100%不会出现这种问题,但是考虑到最大保护模式对网络要求非常高,建议ADG同步网络要做链路及网卡设备冗余。
收起