mysql叢集02:幾個問題

weixin_33924312發表於2018-10-24

叢集架構方案:

方案一:主從架構

方案二:分散式儲存+主從

為什麼要用mysql叢集?
方案一:主從架構
避免單點故障,維護了高可用性

方案二:分散式儲存+主從架構
分庫分表,提高系統效能;
避免單點故障,維護高可用性;

mysql叢集落地技術:
保證主從資料庫資料的一致性;
監控所有節點,確保單點故障快速切換;

水平擴充套件:
方案一:主從
當資料量不大的時候用用2臺伺服器,一個master和一個slave;

方案二:分散式儲存+主從
當資料量不大的時候用用2臺伺服器,一個master和一個slave;
當資料量大的時候用4臺伺服器,兩個master,分別對應一個slave;
當資料量再大的時候,繼續擴充套件,2^n

水平擴充套件是否可逆?
減少伺服器的數量

水平擴充套件怎麼實現呢?

如何保證主從資料庫資料的一致性呢?
兩個方案:半同步複製和非同步複製

如何判定master節點不可用,會有啥問題?
1.根據內部協議;
2.連線超時;
再判斷上有啥問題;split-brain(腦裂問題)

mysql事務原則: acid:
原子性,隔離型,永續性,一致性,
我考慮的關於斷電問題,這是mysql內部問題,
mysql 內部的問題讓myql內部來解決;
保證mysql錯誤和開發錯誤的一致性,這是mysql內部要解決的問題;

開發者要考慮的問題是:叢集方案的選型;
我們開發要解決的問題:為非就是保證mysql錯誤和開發中的錯誤保持一致,當開發中接收到錯誤,mysql一定就是這個錯誤,並且mysql內部要保證資料的正確性。

讀寫分離:
方案一:主從
主節點負責寫操作,從節點負責讀操作;

mysql二進位制日誌:
主要用於資料庫恢復和主從複製,以及審計(audit)操作。

mysql架構:

mysql並行操作:

mysql 事務隔離等級預設是避免不可重複讀,但是存在幻讀的可能;
mysql內部維護了併發控制,內部維護了執行緒佇列,
共享鎖,多個執行緒可以同時讀資料;
獨佔鎖,寫資料,阻塞讀資料,優先執行寫資料,並且寫鎖是互斥的;

java客戶端只需要建立資料庫連線池就行,

相關文章