MySQL主從原理, 高可用架構與高效能架構
MySQL主從, 高可用架構與高效能架構
MySQL主從複製
需求: 以前單個伺服器提供服務, 若突然壞了, 需要通過歷史備份將資料備份至新伺服器, 需要花很長時間, 損失較大
主從複製原理,: 基於二進位制日誌(binlog), 記錄所有資料的變化 , 只要某個時間點主從庫資料一致, 後面通過二進位制日誌實現同步
方框介紹
binlog: 主庫的二進位制日誌, 記錄主庫資料變化
master.info: 記錄連結主庫的使用者名稱和密碼 , 從庫當前二進位制日誌的資料位置
relay-log.info: 上次執行過的二進位制日誌的資料位置
執行過程介紹:
- I/O執行緒拿到master.info裡面存的連結主庫的使用者名稱和密碼與當前二進位制日誌的資料位置
- I/O執行緒連結主庫並詢問主庫是否有二進位制日誌的更新, 通過master.info裡面的資料位置與主庫的二進位制比較
- 主庫通過dump執行緒讀取二進位制日誌
- 若有更新, 則將新資料通過dump執行緒傳送給I/O執行緒
- I/O執行緒將新資料寫入TCP/IP快取
- I/O執行緒給dump執行緒返回ack表示收到
- I/O執行緒將剛拿到的二進位制檔案的最新資料更新master.info裡面存的資料位置, 用於下次再詢問時的比較依據
- TCP/IP快取將資料寫入relay-log(中繼日誌)
- SQL執行緒讀取上次執行過的二進位制檔案的位置,
- 找到最新的日誌檔案並執行
- 更新relay-log.info
可以通過中介軟體實現讀寫分離
中介軟體應該實現的功能:
- 判斷請求是讀還是寫, 寫的請求發給主庫, 讀的請求發給從庫, 實現讀寫分離
- 監控, 若某臺從庫掛了, 不在給其發請求
- 讀請求的負載均衡
高可用架構
以上覆制集有一個缺點, 當主庫掛了, 主庫裡的最新資料可能沒有及時同步到從庫,造成資料丟失
比較好的分散式架構中介軟體有MHA , 淘寶基於MHA開發了TMHA, TDDL
這些中介軟體可以監控, 當主庫掛了能實現以下功能
- 選主: 選資料最新的一個從庫為主庫
- 資料補償: 需要將主庫二進位制日誌檔案獨立出來, 單獨放到一個資料庫
mysql5.7的版本也有一個架構目前還不太成熟
mysql innodb cluster 組成如下:
MGR(實現多臺伺服器提供寫的功能)+mysql router(實現讀寫分離)+mysql shell
mysql的中介軟體理念來自於MongoDB sharding cluster
高效能架構
分片叢集
1. 將表分到不同的伺服器
join不同伺服器的兩張表時, 在伺服器之前擋一箇中介軟體, 將mysql的sql層提到中介軟體中, 下面的伺服器只需要提供表資料, join等sql操作由中介軟體完成
2. 將單表的資料行拆到不同庫
比如一張表有90w行資料, 可以拆到三個伺服器, 每個伺服器放30w條
同樣在伺服器前擋一箇中介軟體, 記錄資料庫的分片策略以及各節點的資訊
各個節點只負責提供資料與存資料
相關文章
- MySQL高可用架構之Keepalived+主從架構部署MySql架構
- MySQL高可用架構之MHA 原理與實踐MySql架構
- MySQL 高可用架構之 MMM 架構MySql架構
- Redis高可用之戰:主從架構Redis架構
- 從MySQL雙主高可用架構,談戀愛關係。MySql架構
- Mysql高可用架構方案MySql架構
- MySQL 高可用架構:主從備份及讀寫分離MySql架構
- 高效能,高可用,安全的架構架構
- MySQL高可用架構對比MySql架構
- mysql高可用架構MHA搭建MySql架構
- Keepalived 架構高可用 Mysql架構MySql
- mysql MHA 高可用架構部署MySql架構
- 高可用架構架構
- MySQL資料庫各場景主從高可用架構實戰MySql資料庫架構
- 高效能Mysql主從架構的複製原理及配置詳解MySql架構
- MySQL高可用架構設計分析MySql架構
- MySQL叢集架構:MHA+MySQL-PROXY+LVS實現MySQL叢集架構高可用/高效能MySql架構
- MySQL主從複製架構轉換MGR架構MySql架構
- Oracle 高可用架構Oracle架構
- MySQL 實現高可用架構之 MHAMySql架構
- MySQL高可用架構-MMM、MHA、MGR、PXCMySql架構
- MySQL高可用架構之MHA實踐MySql架構
- MySQL高可用架構之PXC實踐MySql架構
- 淺談MySQL叢集高可用架構MySql架構
- 高可用Mysql架構_Mycat叢集部署(HAProxy + 兩臺Mycat+Mysql雙主雙從)MySql架構
- 深入高可用架構原理與實踐 書籍學習架構
- 高效能、高可用平臺架構演變史架構
- 構建MHA實現MySQL高可用叢集架構MySql架構
- Canal高可用架構部署架構
- 【Redis】Sentinel 高可用架構Redis架構
- Redis Sentinel高可用架構Redis架構
- Oracle高可用架構(MAA)Oracle架構
- MySQL 主從架構配置詳解MySql架構
- mysqlbackup線上配置Mysql主從架構MySql架構
- MHA高可用架構工作原理?主庫當機處理過程架構
- mysql8.0 主從架構模式【0到1架構系列】MySql架構模式
- MySQL高可用架構:mysql+keepalived實現MySql架構
- MySQL資料庫架構——高可用演進MySql資料庫架構