mysql總結
- 四大特性
- 主從複制
- M-S-S架構
- M-M架構
- M-M-M架構
- MHA架構
- 讀寫分離
- 備份
- 優化
1、 四大特性
(1)原子性:事務是一個不可分割的整體,事務開始操作、要麼全部執行,要麼全部不執行。
(2)隔離性:同一時間,隻允許一個事務請求統一組資料。不同僚物彼此之前沒有幹擾
(3)一緻性:事務開始前和結束後,資料庫的完整性限制沒有被破壞
(4)穩定性:事務完成後,事務對資料庫的所有更新将被儲存到資料庫,不能復原
2、主從複制
場景:當資料需要備份時,采用此架構。可不使用mysqldump指令手動備份,節約時間成本主伺服器插入資料,從伺服器跟着複制。主伺服器down了從伺服器資料存有備份,這種架構也可以實作讀寫分離,分擔主伺服器的讀寫壓力。
1、原理:
(1)主伺服器:需要開啟一個二進制(binlog日志),在這台伺服器上所插入的每條sql都會記錄到日志當中
(2)從伺服器:進行重放,主要用I/O線程和sql線程來進行複制。I/O線程負責拉取日志、SQL線程進行重放
缺點:從伺服器壓力過多,壓力大。從去主拉去日志,會造成I/O壓力集中的問題
2、主從複制模式
(1)複制狀态預設是異步複制
優點:效率高,主接收到寫請求,不需要等待從複制完資料
缺點:不一定能搞保證可靠性
(2)同步複制
優點:可靠性高,主收到寫請求,等待所有從複制完,在傳回結果。
缺點:效率差
(3)半同步複制(兼顧效率和可靠性)
優點:主收到寫請求,隻需等待一台從複制完成之後。再傳回結果
3、M-S-S架構(解決主從I/O壓力集中問題)
場景:主從複制叢集,如果出現一個主多個從的情況,會造成主的資源壓力較大。這種情況采用M-S-S架構解決
1、原理
(1)主伺服器負責接收寫請求
(2)中繼伺服器負責拉去主的binlog日志,但是不進行重放。也就是說中繼伺服器不存儲任何資料,隻留存記錄日志内容(使用Black-hole黑洞引擎)保證本地不存儲任何資料
(3)從伺服器隻需到中繼伺服器拉去binlog日志在本地重放
關系:
M-S-S===主-中繼-從
(1)中繼的master是主伺服器(主伺服器為中繼伺服器服務)
(2)從伺服器的master是中繼伺服器(中繼伺服器為從伺服器服務)
4、M-M架構(互為主備)
場景:不建議使用
優點:最大保證資料的安全性
缺點:沒有好處,可能越做越爛(資料亂),性能也有可能下降
5、M-M-M架構
優點:故障轉移對新主的重新同步資料
缺點:主從切換時,容易造成資料丢失
6、MHA架構
作用:主伺服器壞掉時,可以故障切換
例子:四台伺服器、MHA管理節點、主節點、從節點、從節點
MHA節點需要安裝MHA Manger軟體、其他節點需要安裝MHA node軟體。
所有節點需要做免密登入:因為MHA管理節點需要到各個節點去進行故障切換
所有節點需要建立一個對mysql所有權限的賬号:如果故障切換,需要用的此賬号進行指定新的主
所有節點需要建立一個複制權限的一個賬号:用于複制
到此為止:有一個缺點(可使用腳本完善缺點)
如果你的主伺服器進行故障切換、那麼用戶端寫入請求找不到新的主了。
這時候會有一個VIP的一個概念,這個vip位址會在你的主上。
那麼這樣用戶端隻需通路這個vip位址進行寫操作,不會出現找不到住的情況
7、優化
場景:用戶端讀寫請求非常大的情況下,會對你的主造成一定的壓力。主要因為讀請求會造成壓力較大,而且費時。
讀寫分離主要流程:寫請求交給主、讀請求交給從。中間用一個mycat來排程。
(1)主伺服器(負責寫):使用InnoDB引擎,适用于寫多讀少(行級鎖)
(2)從伺服器(負責讀):使用Mysiam引擎,适用于讀多寫少(表集鎖)
8、備份
模式:全備、差異備份、增量備份
(1)全備:将所有的資料庫進行備份
(2)差異備份:基于全備進行備份增加的部分(浪費空間),還原友善,隻需将全備和最後一次差異備份合并即可
(3)增量備份:根據全備,隻備份添加部分的資料。(節省空間),還原麻煩,需要将多次增量備份按順序進行合并
備份工具
(1)Xbackup邏輯備份:從資料庫導出來的資料,另存為到一個或多個檔案夾當中并将資料轉換為具體的SQL語句
(2)流程:
先做一次全備、然後基于全備做增量備份指定好上次的位置(LSN碼)、還原的時候,記得把檔案的數組和屬組改為mysql程式運作賬戶
備份狀态
(1)熱備:讀寫情況下,可以備份 指令:xbackup
(2)溫備:讀情況下,可備份 指令:mysqldump
(3)冷備:讀寫不可操作,可備份 指令:cp、tar…
優化
硬體優化:
(1)cpu64位、高主頻、高緩存
(2)記憶體–大記憶體、主頻高
(3)硬碟—reid10或5
(4)網絡–标配千兆網卡
查詢優化
(1)建立表時結構要合理,每個表不宜過大
(2)建立索引、提高查詢速度
(3)查詢緩存、将查詢的結果儲存在記憶體當中,會極大的提高性能(預設禁用)
存儲引擎優化
(1)Myisam引擎:表級鎖,影響範圍大,适用于讀多寫少
(2)InnoDB引擎:行級鎖,影響範圍小,适用于寫多讀少