集群系统与事务处理需要注意的一点

简介:

因为Pgpool-II采用Master/Slave模式的时候,因偶然因素导致Pgpool-II与 SlaveDB之间的通信中断(L4SW主动切断)。

而此时某事务向Master数据库提交commit已经成功,在向SlaveDB提交因通信中断而失败。

这样,导致的结果是一方面向Master数据库提交成功,另一方面向前台程序返回出错信息的奇怪现象。

(由于客户的 fail_over_on_backend_error为假,故没有发生failover)

这是因为,首先,Pgpool-II中没有事务处理机制,或者说没有包含Transanction Manager,如果有,那么它可以利用数据库的两阶段提交能力,保证:要么两个数据库节点一起提交,要么一起回滚。当然,具体到Pgpool-II中,在Master/Slave模式也不允许这么作,但至少如果有Transaction Manager,如果出现通讯错,还是应该可以roll back的。

其次,展开了想一下,就算是有事务处理机制,就能保证数据库节点都提交或者都回滚了吗?

实际上,事务处理也就是利用所谓预提交方式,保证大家都预提交成功后,再一起真正提交或者一起真正回滚。

那如果"真"提交的时候出错了呢?还是说再搞三阶段提交、四阶段提交?

所以完美的事务处理是不存在的,应用和运维人员要考虑到这一点,准备好一旦数据在各节点间发生不一致后的对应方案。






本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/p/3223078.html,如需转载请自行联系原作者


目录
相关文章
|
7月前
|
架构师 数据库
深入探讨分布式事务:解析跨多个数据库的一致性
在现代应用程序中,分布式系统已经变得越来越普遍,但同时也带来了一系列的挑战。其中之一就是分布式事务管理,它涉及到在多个数据库或服务之间保持一致性和可靠性。本文将深入介绍分布式事务的概念,探讨不同的实现方式以及它们的优缺点。无论您是开发人员、系统管理员还是系统架构师,了解分布式事务是构建稳健分布式系统的关键一步。
|
3月前
|
消息中间件 缓存 中间件
如何保证缓存和数据库数据一致性
如何保证缓存和数据库数据一致性
|
10月前
|
关系型数据库 MySQL Java
多数据源事务处理-涉及分布式事务
多数据源事务处理-涉及分布式事务
111 0
|
10月前
|
监控 数据库
构建高可用性的数据库架构:主从复制和分区策略
在今天的软件开发领域中,构建高可用性的数据库架构至关重要。数据是应用程序的核心,因此确保数据的持久性、可用性和一致性对于任何规模的应用程序都是至关重要的。在本篇文章中,我们将重点介绍两种常用的数据库高可用性技术:主从复制和分区策略,并讨论如何将它们结合起来构建一个稳定和可靠的数据库架构。
111 0
|
存储 SQL 缓存
数据库高并发和高可用方案
数据库高并发和高可用方案
数据库高并发和高可用方案
|
消息中间件 缓存 NoSQL
数据库与缓存一致性方案分享
数据库与缓存一致性方案分享
数据库与缓存一致性方案分享
|
存储 缓存 算法
数据库故障恢复机制的前世今生
在数据库系统发展的历史长河中,故障恢复问题始终伴随左右,也深刻影响着数据库结构的发展变化。通过故障恢复机制,可以实现数据库的两个至关重要的特性:Durability of Updates以及Failure Atomic,也就是我们常说的的ACID中的A和D。文章将首先描述故障恢复问题本身;然后按照基本的时间顺序介绍传统数据库中故障恢复机制的演进及优化;之后思考新硬件带来的机遇与挑战;并引出围绕新硬件的两个不同方向的研究成果。
232 0
|
消息中间件 canal 缓存
缓存和数据库的数据同步和一致性
首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。
|
缓存 NoSQL 安全
如何保障缓存和数据库的一致性(超详细案例)
如何保障缓存和数据库的一致性(超详细案例)
549 0
如何保障缓存和数据库的一致性(超详细案例)
|
存储 SQL 关系型数据库
TiDB用什么保证备份的一致性?
TiDB用什么保证备份的一致性?
359 0
TiDB用什么保证备份的一致性?

热门文章

最新文章