MySQL怎麼保證高可用
主備延遲
即“同步延遲”。與資料同步有關的時間點主要包括以下三個:
- 主庫 A 執行完成一個事務,寫入 binlog,我們把這個時刻記為 T1;
- 之後傳給備庫 B,我們把備庫 B 接收完這個 binlog 的時刻記為 T2;
- 備庫 B 執行完成這個事務,我們把這個時刻記為 T3。
所謂主備延遲,就是同一個事務,在備庫執行完成的時間和主庫執行完成的時間之間的差值,也就是 T3-T1。
你可以在備庫上執行 show slave status 命令,它的返回結果裡面會顯示 seconds_behind_master,用於表示當前備庫延遲了多少秒。
主備延遲的來源
首先,有些部署條件下,備庫所在機器的效能要比主庫所在的機器效能差。
解決:備庫使用和主庫同樣配置的資料庫
第二種常見的可能了,即備庫的壓力大
一般可以這麼處理:
- 一主多從。除了備庫外,可以多接幾個從庫,讓這些從庫來分擔讀的壓力。
- 通過 binlog 輸出到外部系統,比如 Hadoop 這類系統,讓外部系統提供統計類查詢的能力。
第三種可能,即大事務。
不要一次性地用 delete 語句刪除太多資料。其實,這就是一個典型的大事務場景。
另一種典型的大事務場景,就是大表 DDL。
處理方案就是,計劃內的 DDL,建議使用 gh-ost 方案
主備切換的策略
- 可靠性優先策略
- 可用性優先策略
可靠性優先策略:
- 判斷備庫 B 現在的 seconds_behind_master,如果小於某個值(比如 5 秒)繼續下一步,否則持續重試這一步;
- 把主庫 A 改成只讀狀態,即把 readonly 設定為 true;
- 判斷備庫 B 的 seconds_behind_master 的值,直到這個值變成 0 為止;
- 把備庫 B 改成可讀寫狀態,也就是把 readonly 設定為 false;
- 把業務請求切到備庫 B。
在滿足資料可靠性的前提下,MySQL 高可用系統的可用性,是依賴於主備延遲的。延遲的時間越小,在主庫故障的時候,服務恢復需要的時間就越短,可用性就越高。
相關文章
- 微服務9:服務治理來保證高可用微服務
- 二、如何保證訊息佇列的高可用?佇列
- redis淘汰+過期雙向保證高可用 | redis 為什麼那麼快?Redis
- 海量資料架構下如何保證Mycat的高可用?架構
- 雲網路對等連線產品的高可用保證
- 面試題剖析,如何保證訊息佇列的高可用?面試題佇列
- 關於redis的幾件小事(五)redis保證高併發以及高可用Redis
- MySQL是怎麼保證資料一致性的MySql
- 高可用 proxysql + mysql MGRMySql
- mysql高可用之keepalivedMySql
- Mysql 5.7 MHA 高可用MySql
- Mysql高可用架構方案MySql架構
- mysql高可用衡搭建(Keepalived)MySql
- MySQL高可用之GC-Galera Cluster for MySQLMySqlGC
- 什麼是高可用?高可用軟體哪家好?
- 基於 MHA 高可用的 MySQLMySql
- keepalived+MySQL實現高可用MySql
- MySQL資料庫高可用方案MySql資料庫
- mysql高可用架構MHA搭建MySql架構
- MySQL主主模式+Keepalived高可用MySql模式
- mysql高可用叢集之MMMMySql
- MySQL高可用架構對比MySql架構
- 關於MQ的幾件小事(二)如何保證訊息佇列的高可用MQ佇列
- MySQL高可用架構:mysql+keepalived實現MySql架構
- MySQL高可用方案之DRBD+MySQL+RHCS(下)MySql
- MySQL高可用方案之DRBD+MySQL+RHCS(上)MySql
- MySQL 高可用性—keepalived+mysql雙主MySql
- MySQL高可用架構設計分析MySql架構
- MySQL5.7高可用版釋出MySql
- Kubernetes-高可用叢集證書更新
- MHA+MySQL主從配置實現MySQL高可用MySql
- MySQL高可用架構-MMM、MHA、MGR、PXCMySql架構
- MySQL 高可用架構之 MMM 架構MySql架構
- MySQL高可用之MGC--MariaDB Galera ClusterMySqlGC
- 常見的Mysql十款高可用方案MySql
- 第五週作業mysql高可用+ansibleMySql
- 搭建 MySQL 高可用高效能叢集MySql
- MySQL 實現高可用架構之 MHAMySql架構