主從數據庫不一致如何解決?
場景描述,對於主從庫,讀寫分離,如果主從庫更新同步有時差,就會導致主從庫數據的不一致。
1、忽略這個數據不一致,在數據一致性要求不高的業務下,未必需要時時一致性。
2、強制讀主庫,使用一個高可用的主庫,數據庫讀寫都在主庫,添加一個緩存,提升數據讀取的性能。
3、選擇性讀主庫,添加一個緩存,用來記錄必須讀主庫的數據,將哪個庫,哪個表,哪個主鍵,作為緩存的key,設置緩存失效的時間為主從庫同步的時間,如果緩存當中有這個數據,直接讀取主庫,如果緩存當中沒有這個主鍵,就到對應的從庫中讀取。
問題原因:
網絡信息不同步,數據發送有延遲
根本上解決:
- 優化主從間的網絡環境,通常放置在同一個機房部署,如使用阿里雲等雲服務器時要注意此現象
- 監控主從節點延遲(通過offset)判斷,如果slave延遲過大,暫時屏蔽程序對該slave的數據訪問