我们知道用户在使用数据库在线业务系统时,如果数据库服务端发生了维护操作,比如说重启或者主备切换,或者发生故障时,应用程序会感应到数据库之间的连接发生中断,一些执行的事务会被自动回滚掉。当数据服务恢复之后,应用程序需要重建连接,根据业务逻辑重试,这样对业务来说不仅增加了业务系统的开发复杂性,也增加了业务运行风险。
数据库发生异常时,我们无法判断正在执行的事务是否提交完成。为了解决连接中断和事务自动回滚的问题,华为云GaussDB数据库提供了应用无损透明的高可用能力,通过这个能力我们实现了连接保持和事务断点继续(从事务中断的地方继续执行)的功能。
GaussDB应用无损透明支持在数据库内部自动判断事务边界,缓存当前事务执行的会话信息和数据信息,这些信息包括会话锁、用户变量等内容。在数据库恢复时,可以根据这些缓存的会话信息和事务信息,以及服务端的日志一起自动构建恢复出一个一致性的快照点,通过这个一致性快照点,恢复出数据库发生主备切换那一刻所有的应用会话和未提交的事务状态,当会话和事务状态都被恢复之后,我们可以从事务的一致性点上继续往下执行事务。
从业务视角来看,如果使用应用无损透明功能,整个数据库在发生主备切换期间,应用程序只是感知到事务执行稍微变慢了,不会感知到事务执行中断,也不需要进行重建连接,更不需要进行事务的重试,简化了业务程序的开发复杂性,降低了风险。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




