關于數據庫系統的 Republication Lags
Republication Lags ( 復制延遲)是指在主從數據庫復制環境中,從庫數據同步落后于主庫的時間間隔。
如果復制延遲比較嚴重,會對系統有不好的影響,如:
1. 數據不一致
從庫的數據狀態會落后主庫,查詢從庫如果讀取到過期數據,會造成數據不一致的情況。
2. 高可用性降低
如果主庫宕機,需要故障轉移到從庫提供服務,但此時從庫的數據狀態不是最新的,可能會有比較長的服務中斷時間。
3. 主從切換困難
主從之間數據差距大,進行切換需要的時間更長,可能需要重新建立復制,同步期間整個系統無法對外服務。
4. 增加主庫壓力
主庫需要保持較長時間的binary log以供從庫追趕及重建復制關系,增加了存儲以及備份的負載。
5. 影響其他服務
其他依賴于從庫提供實時數據的服務會受到影響,例如報表、數據分析等會基于過期的數據展現,減少準確性。
所以,嚴重的復制延遲最終會降低系統的高可用性,增加故障轉移復雜度,也會對主庫及其他相關服務造成額外的負面影響。因此,要把復制延遲控制在較小的范圍。
主要成因:
1、網絡延遲:
主庫與從庫之間的網絡如果存在延遲或中斷,會直接導致復制數據的傳輸速度下降,從而加大復制延遲。
2、服務器性能:
如果從庫的服務器性能比主庫差很多,那么處理并應用主庫傳來的binary log的速度會很慢,也會延長復制時間。
3、事務過大:
主庫上如果有大量的大事務執行,會占用大量IO并加重從庫的負載,從而造成從庫遲遲不能追上主庫。
4、批量操作:
如批量insert或load data這類批量操作也會增加復制延遲。
應對方法包括:
- 升級網絡鏈路,減少網絡延遲。
- 使用性能較好的服務器作為從庫,并適當增加從庫數量分攤負載。
- 控制大事務的執行頻率和次數,拆分大事務為小事務執行。
- 減少批量操作,不要一次性執行過多的批量操作語句。
- 適當緩存策略,一部分數據更新而不立即復制。
- 輔助使用中間層緩存系統,減輕主從復制的壓力。
通過上述策略,可以有效地控制和減小主從復制的延遲。