叢集系統與事務處理需要注意的一點
因為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,如需轉載請自行聯絡原作者
相關文章
- Spring事務需要注意的幾個點Spring
- Oracle vs PostgreSQL,研發注意事項(6)- 事務處理OracleSQL
- TransactionScope事務處理方法介紹及.NETCore中的注意事項NetCore
- 關於叢集節點timeline不一致的處理方式
- Spark 叢集執行任務失敗的故障處理Spark
- 分散式事務處理方案,微服事務處理方案分散式
- mysql事務處理與鎖機制MySql
- 一對一直播系統開發需要注意的幾點內容
- 注意Spring事務這一點,避免出現大事務Spring
- mysqli 事務處理MySql
- MySQL事務處理MySql
- springboot事務處理Spring Boot
- Java應用叢集下的定時任務處理方案(mysql)JavaMySql
- 混合事務分析處理“HTAP”的技術要點分析
- 分散式系統與叢集環境分散式
- Python面試中需要注意的幾點事項!Python面試
- Redis中的事務處理機制分析與總結Redis
- 點晴CRM:CRM系統的實施需要注意什麼?
- repmgr 叢集雙主問題處理
- VRA-LM防腐塗料汙水處理廠防腐施工中需要注意的事項ZTOVR
- golang split需要注意的一個點Golang
- 幾點需要注意選擇APP開發外包團隊的注意事項APP
- Quartz叢集增強版_01.叢集及缺火處理(ClusterMisfireHandler)quartz
- Laravel 分散式事務處理Laravel分散式
- 事務處理基本概念
- Spring事務專題(三)事務的基本概念,Mysql事務處理原理SpringMySql
- tidb之dm叢集同步異常處理TiDB
- 刷題時需要的注意事項
- 【Net】StreamWriter.Write 的一點注意事項
- 介面異常狀態統一處理方案:優先業務端處理,再按需統一處理。
- KafkaConsumer對於事務訊息的處理Kafka
- 阿里是如何處理分散式事務的阿里分散式
- Springboot資料庫事務處理——Spring宣告式事務Spring Boot資料庫
- Spring中使用@Async與@Transactional協調非同步與事務處理Spring非同步
- springcloud分散式事務處理 LCNSpringGCCloud分散式
- Redis服務之叢集節點管理Redis
- 使用無程式碼開發平臺需要重點注意的事項
- 需要提醒你關於 golang 中 map 使用的幾點注意事項Golang
- 叢集故障處理之處理思路以及健康狀態檢查(三十二)