大表數據庫字段長度修改事故

1.背景:設計了兩個數據庫:業務庫和非業務庫,兩個數據庫都設計了一主一從,程序上寫主讀從,現在有一張業務庫主表地址字段長度需要修改加長,此業務表數據定時歸檔到歸檔表,歸檔表屬於非業務庫,歸檔表數據量爲千萬級。

2.操作流程

(1)事務執行歸檔表地址字段修改。

3.事故

事務執行過程中,新寫入的數據查詢不到,導致業務上數據驗證不通過。

4.原因分析

寫庫事務執行沒問題,讀庫事務執行時,讀庫事務堵塞,並且由於兩個讀數據庫是同一個實例,導致兩個讀數據庫都讀不到數據。

根本原因是:寫庫事務是並行處理,讀庫事務是串行處理,讀庫的事務按順序執行,其他事務必須等待,當一個事務執行過長,就導致主從數據庫數據同步延遲。

5.解決方案

(1)做多個從庫

(2)修改時將流量全部切到主庫

(3)升級數據庫到mysql 8.0,可秒級修改字段

 

mysql 8.0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章