資料庫高可靠,輕鬆解決事務丟失問題
資料庫的發展始終與使用者需求變遷緊密相關。近年來,資料上雲的趨勢愈演愈烈,越來越多的企業選擇把資料庫遷移上雲,這對雲上資料庫的產品效能,尤其在可靠性和安全性方面,提出了更高的要求。
而現實情況是,企業在雲上使用自建資料庫的過程中,由於原生開源
MySQL的事務能力並不完善,事務可能面臨丟失的風險,難以保證事務執行前後資料的可靠性和一致性。事務丟失給企業造成的損失,也加大了部分企業對資料上雲的擔憂。
什麼是
“事務”?事務是指資料庫中對資料進行一個或者多個複雜操作的基本單元,它承載著業務持續發展的使命,不容有失。
以購物場景為例,一個完整的購物過程通常包括買家付錢、賣家交付商品並在庫存中減掉本次出售商品的數量、賣家收款三個操作。這三個操作是獨立的,但是這三個操作需要都完成後,整個購物操作才算完成。這樣的三個操作,就可以看作是一個事務,即一個事務中包含很多操作,要麼都完成,要麼都不完成。資料庫中事務的丟失,可能會導致很多複雜資料的丟失。
天翼雲關係型資料庫
MySQL具有高可靠特性,基於主備架構,能夠在最大程度兼顧主庫效率的同時保證主庫崩潰時服務不中斷,做到事務零丟失,進而保證企業業務穩定連續,將故障影響降至最小,為企業排憂解難。
精準判斷主庫崩潰時的複製狀態
天翼雲關係型資料庫
MySQL半同步複製,是基於狀態通道和時間戳的高可靠特性來實現的,其總體工作流程為:
資料庫管控平臺高可用模組(
HA)儲存主庫末位的複製狀態和時間戳,備例項儲存主庫末位的複製狀態和時間戳,然後透過比較二者的狀態與時間戳值來精準判斷主庫崩潰時的複製狀態。
從原理上來看是相對簡單的,但在落地時並不容易,天翼雲團隊透過大量實踐驗證做到了精準判斷。
根據主庫崩潰狀態自行恢復服務
此前,天翼雲關係型資料庫
MySQL半同步複製狀態下絕大多數情況是同步複製狀態,極少數情況下(如執行大事務時)會轉換到非同步複製狀態,然後自動轉換回同步複製狀態。
現在,天翼雲關係型資料庫
MySQL半同步複製憑藉高可靠特效能夠精準判斷主庫崩潰時的複製狀態,並依此按照以下四種情況準確恢復服務:
1在同步複製狀態下主庫發生崩潰。此時先嚐試拉起主庫,拉起主庫成功,保證事務不丟失,在這個過程中可實現秒級恢復服務。
2在同步複製狀態下主庫發生崩潰,且拉起主庫失敗。此時主備資料一致,會將服務平滑切換到備庫,保證事務不丟失,並且秒級恢復服務。
3在非同步複製狀態下主庫發生崩潰,不能切換到備庫,拉起主庫成功,保證事務不丟失,在這個過程中可以實現秒級恢復服務。
4在非同步複製狀態下主庫崩潰後,不能切換到備庫,且不能拉起主庫,會在原來的資料上恢復主庫,保證事務不丟失,在這個過程中可以實現分鐘級恢復服務。
天翼雲關係型資料庫
MySQL半同步複製高可靠特性,能最大程度保證主庫效率,是因為主庫的事務提交完全依賴於備庫的訊號,而備庫把事務寫入中繼日誌後也會立即返回一個ACK(即確認字元),沒有強同步複製備庫回放事務帶來的主從時延。
場景應用
機房故障斷電
使用者使用天翼雲關係型資料庫
MySQL,主備機跨AZ(可用區)部署,如果主庫所在的AZ(可用區)機房故障斷電不可用,主庫因此發生故障,使用者服務發生中斷,此時天翼雲關係型資料庫MySQL憑藉高可靠特性可以使服務在秒級完成主備切換,並且做到服務與中斷前的資料檢視完全一致,不會有任何事務丟失。
大事務執行期間資料庫當機
使用者使用天翼雲關係型資料庫
MySQL半同步複製模式時,當主庫正在執行大事務,並且複製狀態從同步複製轉換到非同步複製時,主庫突然當機,服務因此被迫中斷,天翼雲關係型資料庫MySQL主庫會在數秒內被拉起並對外提供服務,並且與中斷前的資料檢視完全一致,不會有任何事務丟失。
天翼雲關係型資料庫 MySQL的高可靠特性在保障事務不丟失的前提下,能夠同時做到秒級恢復(極端情況下,分鐘級恢復),從而確保主備例項的資料一致性,極大提高了資料可靠性。這是天翼云為企業資料保駕護航,踐行“致力於打造企業級資料底座”的有力體現。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70014251/viewspace-2914631/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Django資料庫連線丟失問題Django資料庫
- 瞭解這一點輕鬆解決Oracle資料庫系統報錯問題Oracle資料庫
- 輕鬆解決跨域問題跨域
- RocketMq訊息丟失問題解決MQ
- Vuex資料頁面重新整理丟失問題解決方案Vue
- RocketMQ訊息丟失解決方案:事務訊息MQ
- SpringCloud解決feign呼叫token丟失問題SpringGCCloud
- 解決資料庫高併發訪問瓶頸問題資料庫
- 資料庫分庫分表之後,如何解決事務問題?資料庫
- 解決 php 使用json_encode存入資料庫中的中文亂碼丟失反斜槓問題PHPJSON資料庫
- JavaScript中解決計算精度丟失的問題JavaScript
- Jison解決JS處理後端返回的Long型資料精度丟失問題JS後端
- Web-請求資料+號丟失問題Web
- 分散式事務系列 - 解決跨庫轉賬問題分散式
- 輕鬆解決MacBook經常當機的問題Mac
- 資料庫併發寫入問題-丟失更新與寫入偏差資料庫
- 資料庫分庫分表之後,你是如何解決事務問題?資料庫
- Nginx session丟失問題處理解決方法NginxSession
- 輕鬆解決Github連線緩慢、圖裂問題Github
- 前後端分離解決session跨域丟失問題後端Session跨域
- 解決RabbitMQ訊息丟失與重複消費問題MQ
- RabbitMQ如何解決被重複消費和資料丟失的問題?MQ
- vuex配sessionStorage進行自動儲存,解決重新整理資料丟失的問題。VueSession
- 資料過載採用exalead輕鬆解決
- 使用RestCloud ETL輕鬆解決WebService資料同步RESTCloudWeb
- 高併發下丟失更新的解決方案
- 香港伺服器資料丟失怎麼解決?伺服器
- AWS建立AMI映像資料丟失解決辦法
- 資料庫層面問題解決思路資料庫
- 讀資料質量管理:資料可靠性與資料質量問題解決之道09資料可靠性
- 解決hive資料庫 插入資料很慢的問題Hive資料庫
- Spring事務(Transaction)管理高階篇一棧式解決開發中遇到的事務問題Spring
- 【Socket】解決UDP丟包問題UDP
- 資料庫事務併發問題----各種事務隔離下的情況資料庫
- SqlServer資料庫中文亂碼問題解決SQLServer資料庫
- 解決Xamarin.Android繫結第三方庫時型別丟失的問題Android型別
- Oracle undo 表空間資料檔案丟失強制啟動資料庫(沒有未提交的事務)Oracle資料庫
- RPA技術輕鬆解決ERP系統間資料交換難題