从TAF到TAC 业务延续性的谋求永无止境
关于数据库系统来说,高可用和业务延续性是用户最为关注的疑问。在我介入的几次用户调研中,业务延续性疑问都是排名第一的关注点,而且热度是排名第二的疑问的2倍以上。关于企业级运行或许关键系统来说,业务延续性是永久的话题。券商的数据库出疑问了,那么是否在数秒内复原业务?银行的数据库出疑问了,是否RPO=0,RTO凑近于0?关于绝大少数中小金融机构的大少数系统,运营商的大少数系统,政府、医疗、制作业的绝大少数关键系统而言,单机集中式数据库的处置才干是足够的,用户最须要担忧的其实只是高可用的疑问。
Oracle 在1998年推出Oracle 8i的时刻,推出了一个叫做透明运行缺点切换TAF(Transparent Application Failover)的技术组件。从而让OPS节点缺点时成功衔接的智能切换。20年后,Oracle 18C中的高可用从透明估值切换演化成了透明运行延续性TAC(Transparent Application Continuity),这特性能将会成为Oracle 23C首推的高可用切换方案。当天咱们就来方便地了解一下Oracle的数据库高可用技术的开展历程。国产数据库厂商也应该能够从这个开展历程中遭到必定的启示,从而优化国产数据库的高可用才干。
团体以为Oracle的数据库高可用大体可以分为TAF/FCF/TAC(AC)三大阶段。或许有些好友会有其余的一些分段方法。TAF主打的是OPS/RAC的透明缺点切换。这是一种客户端缺点切换技术,当客户端发现数据库实例无法反常上班的时刻,经过数次RETRY有效,则智能动员衔接切换。这种切换有两种形式,一种是SESSION形式,从新创立一个新的会话,丢弃以前做的一切义务,从新开局新的上班。还有一种是SELECT形式,假设出现切换的会话正在做一个只读事务,则正在做的SELECT可以继续启动。这是由于与SELECT相关的一切数据与控制信息在PGA中是完整的,不须要依赖主机的SGA和主机的形态。
TAF性能够强,只不过切换的期间会长了一点,由于客户端感知缺点,屡次RETRY,都会糜费必定的期间。而一些关键运行须要更快地切换期间。因此极速衔接缺点切换(FCF)在Oracle中应运而生了,这个技术在Oracle 11G随着UCP衔接池的推出,变得愈加完善了。FCF技术依赖于Fast Application Notification (FAN)。传统上,数据库实例发生某些变动(服务、实例、节点的DOWN 或 UP)时,运行程序会挂起,直到超时,此时运行程序会收到相关的SQL异常。随 Oracle>FCF处置了极速切换的疑问,假设运行程序里捕捉了ONS中的事情发生的客户端失误,并且智能丢弃的业务逻辑,从新成功业务逻辑,那么在客户端简直可以对RAC某个节点的缺点无感知。不过FCF有一点是对TAF的一个发展,那就是FCF要丢弃一切的缺点前的操作。哪怕有一条SELECT曾经查了2小时,还有1秒钟就可以成功。
为了处置这个疑问,让系统的高可用愈加完备,Oracle在12C中对整个数据库高可用框架启动了重构。引入了全局数据服务(GDS)、事务守护者Transaction Guard (TG)等机制。基于这些新的机制,成功了运行延续性(AC)和透明运行延续性(TAC)。并且将高可用框架裁减到了RAC以外。ADG/OGG复制环境中,也可以经常使用这些高可用途理方案。
Oracle要成功的指标是,当系统缺点切换的时刻,能不能做到运行无感。也就是说,假设切换是无损切换(比如RAC节点缺点,同步ADG的缺点切换,ADG的SWITCHOVER等场景)的时刻,是不是可以成功极速的无损切换,让业务延续性获取最大的包全呢?为了成功这个指标,Oracle引入了TG和缺点事务重播。基于此,DML/DDL等写操作都可以成功透明切换。
从Oracle>有了这些基础技术,TAC的成功就能牛逼了。当RAC的节点缺点时,假设你性能了TAC,那么缺点的SESSION能智能切换到接收实例上,未成功的 读写操作继续成功,运行端无需捕捉失误,也不会捕捉到失误。运行端的感触仅仅是如同事务比以往稍微慢了一点点。
TAC不只可以在RAC中成功,关于ADG环境中依然可以成功。假设ADG驳回了同步复制形式,那么数据必需是无损的,因此ADG可以在FAILOVER的时刻经过TAC来成功切换。假设ADG不是同步形式的 ,那么为了确保缺点回放的分歧性,此切换仅仅能在SWITCHOVER这种无损切换中经常使用。在ADG上的TAC成成成果与RAC上并无太大区别,只是切换的期间长了不少而已。
从上方我对Oracle高可用技术开展的形容上,大家应该可以看出Oracle为了提高数据库的可用性而做的努力。目前国产数据库也在推出相似Oracle RAC的技术,在这些国产的“RAC”里,无一例当地允许了相似TAF的技术。我感觉在Oracle曾经演进到了TAC的当天,咱们的国产数据库厂商哪怕不做个弯道超车,追上Oracle,成功真正的平替也是很必要的吧。
另外关于咱们爱戴的用户和运行开发商,我也想说两句,二十多年过去了,你还只会用TAF做缺点切换吗?TAC难道不是你们更好的选用吗?