如何優化MySQL主從復制的性能?

優化MySQL主從復制的性能需要從硬件、配置、架構設計和運維策略等多方面入手。以下是詳細的優化方案:

一、減少主庫寫入壓力

1. ?主庫優化?

二進制日志(binlog)優化?:

  • 使用 binlog_format=ROW 以獲得更高效的復制和更少的數據沖突(但日志量可能增大)。
  • 設置 sync_binlog=1 確保事務提交時同步寫入binlog(犧牲部分性能換取數據安全)。
  • 設置 innodb_flush_log_at_trx_commit=1 保證事務持久性(同樣可能犧牲性能)。

延遲寫入優化?:

  • 啟用組提交(Group Commit): MySQL 5.6+默認開啟,減少磁盤I/O次數。
  • 使用異步寫入(innodb_flush_log_at_trx_commit=2)提高性能,但可能丟失最近1秒的數據。

2. ?應用層優化?

  • 批量寫入?: 合并多個寫操作為批量事務,減少事務提交次數。
  • 讀寫分離?: 將讀操作路由到從庫,減輕主庫壓力。

二、提升從庫復制性能

1. ?并行復制(Multi-Threaded Replication)?

配置并行復制?(MySQL 5.6+支持):


# 從庫配置 my.cnf
slave_parallel_workers=4      # 并行線程數(建議設置為CPU核心數的50%~70%)
slave_parallel_type=LOGICAL_CLOCK  # 基于事務依賴關系的并行(MySQL 5.7+)

監控并行復制效率?:

SHOW STATUS LIKE 'Slave_parallel_workers%';

2. ?從庫硬件優化?

  • 使用SSD?: 提升磁盤I/O性能,尤其是中繼日志(relay log)的寫入。
  • 增加內存?: 配置更大的 innodb_buffer_pool_size(通常為物理內存的70%~80%)。

3. ?優化中繼日志?

  • 設置 relay_log_recovery=1 確保從庫崩潰后自動恢復。
  • 定期清理中繼日志(需確保復制已完成):
STOP SLAVE; RESET SLAVE; START SLAVE;

三、網絡優化

1. ?減少網絡延遲?

  • 主從庫部署在同一機房或低延遲網絡環境中。
  • 使用專用網絡帶寬,避免與其他服務共享。

2. ?壓縮二進制日志?

  • 啟用binlog壓縮(MySQL 8.0+):
binlog_transaction_compression=ON
  • 使用外部工具(如 gzip)壓縮備份文件傳輸。

四、架構優化

1. ?多級復制(級聯復制)?

主庫 → 中間庫(分發層) → 多個從庫,分散主庫壓力。

主庫(Master) → 中間庫(Relay Slave) → 從庫1(Slave1)↘ 從庫2(Slave2)

2. ?半同步復制?

  • 確保至少一個從庫收到binlog后再提交事務(減少數據丟失風險):
# 主庫配置
plugin_load="rpl_semi_sync_master=semisync_master.so"
rpl_semi_sync_master_enabled=1# 從庫配置
plugin_load="rpl_semi_sync_slave=semisync_slave.so"
rpl_semi_sync_slave_enabled=1

3. ?分片架構?

  • 將數據按業務分片(Sharding),分散寫入壓力。

五、配置與監控

1. ?關鍵參數調整?

  • 從庫配置 read_only=1 防止誤寫入。
  • 設置 slave_net_timeout=60(默認3600秒),減少網絡超時等待。

2. ?監控工具?

  • 內置命令?:
SHOW SLAVE STATUS\G    -- 檢查復制狀態與延遲
SHOW PROCESSLIST;      -- 查看復制線程
  • 外部工具?:
    Percona Monitoring and Management(PMM)
    Prometheus + Grafana + MySQL Exporter

3. ?延遲處理?

  • 自動跳過錯誤?(謹慎使用):
SET GLOBAL sql_slave_skip_counter=1;  -- 跳過單個錯誤

重新同步數據?:通過 mysqldump 或 xtrabackup 重建從庫。

六、高級優化策略

1. ?GTID復制?

啟用GTID(全局事務標識符)簡化故障切換:

# 主從庫配置
gtid_mode=ON
enforce_gtid_consistency=ON

2. ?過濾復制?

僅復制必要數據(減少從庫負載):

# 從庫配置
replicate_do_db=db1,db2       -- 僅復制指定庫
replicate_ignore_table=db1.logs  -- 忽略特定表

3. ?Proxy中間件?

  • 使用 ?ProxySQL? 或 ?MaxScale? 實現自動讀寫分離和負載均衡。

七、性能優化對比表

優化方向?具體措施?適用場景??風險/成本?
并行復制設置 slave_parallel_workers高并發寫入,從庫延遲嚴重配置不當可能導致數據不一致
半同步復制啟用 rpl_semi_sync_master要求數據強一致性增加主庫響應時間
二進制日志壓縮binlog_transaction_compression=ON網絡帶寬不足僅支持MySQL 8.0+
多級復制級聯架構分散壓力大規模從庫集群運維復雜度增加

八、注意事項

  • 測試環境驗證?: 所有優化操作需先在非生產環境驗證。
  • 逐步調整參數?: 避免一次性修改多個關鍵參數。
  • 監控先行?: 優化后需持續監控復制延遲和系統負載。

通過以上優化策略,可顯著提升MySQL主從復制的性能和穩定性,降低延遲風險,適應高并發場景。需根據實際業務負載和硬件資源靈活調整方案。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/79494.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/79494.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/79494.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL安裝完全指南:從零開始到配置優化(附避坑指南)

🔥 前言:為什么你總是裝不好MySQL? (實話實說)每次看到新手在MySQL安裝環節瘋狂踩坑,老司機都忍不住想摔鍵盤!明明官網下載的安裝包,怎么就會報錯呢?為什么別人的環境變…

密碼學_加密

目錄 密碼學 01 密碼基礎進制與計量 02 加解密基操 替換 移位 編碼 編碼 置換 移位 加解密強度 03 對稱加密算法(私鑰) 工作過程 缺陷 對稱加密算法列舉? DES DES算法架構 DES分組加密公式 DES中ECB-CBC兩種加密方式 3DES 由于DES密鑰太短&#xf…

輕量級RTSP服務模塊:跨平臺低延遲嵌入即用的流媒體引擎

在音視頻流媒體系統中,RTSP(Real-Time Streaming Protocol)服務模塊通常扮演著“視頻分發中心”的角色,它將編碼后的音視頻內容轉為標準的流媒體格式,供客戶端(播放器、云端平臺、AI模塊等)拉流…

Nginx發布Vue(ElementPlus),與.NETCore對接(騰訊云)

案例資料鏈接:https://download.csdn.net/download/ly1h1/90745660 1.邏輯說明 1.1 邏輯示意圖 # 前端請求處理邏輯圖瀏覽器請求流程: 1. 瀏覽器發起請求├─ 開發環境(DEV)│ ├─ 請求URL: http://192.168.0.102:3000/api/xxx│ └─ 被Vite代理處理└─ 生產…

解析機器人 2.0.2 | 支持超過50種短視頻平臺的鏈接解析,無水印提取,多功能下載工具

解析機器人是一款功能強大的工具軟件,登錄即可解鎖會員特權。它支持超過50種短視頻平臺的鏈接解析,包括抖音、快手、西瓜、bilibili等,并能實現無水印提取。此外,還提供P2P下載、磁力鏈等多種下載方式,確保用戶能夠快速…

C++ - 數據容器之 forward_list(創建與初始化、元素訪問、容量判斷、元素遍歷、添加元素、刪除元素)

一、創建與初始化 引入 <forward_list> 并使用 std 命名空間 #include <forward_list>using namespace std;創建一個空 forward_list forward_list<int> fl;創建一個包含 5 個元素&#xff0c;每個元素初始化為 0 的 forward_list forward_list<int&g…

Python爬蟲實戰:獲取企信網指定公司基本工商數據并分析,為客戶選擇公司做參考

一、引言 在商業決策、市場調研等眾多領域,企業的基本工商信息是至關重要的參考依據。企信網作為權威的企業信息查詢平臺,匯聚了海量企業的詳細信息。借助 Python 的爬蟲技術,能夠自動從企信網獲取指定公司的工商信息,再運用數據分析和機器學習方法對這些信息進行深入挖掘…

STM32部分:2-1、STM32CubeMX介紹

飛書文檔https://x509p6c8to.feishu.cn/wiki/BTv4wW3O7ita1dkQGkrcBb9rnXg 資料手冊 英文手冊 https://www.stmcu.com.cn/Designresource/detail/user_manual/711316 中文手冊 https://www.stmcu.com.cn/Designresource/detail/localization_document/710583 界面說明 首…

SVM實戰:從理論到鳶尾花數據集的分類可視化

SVM實戰&#xff1a;從理論到鳶尾花數據集的分類可視化 在機器學習的廣闊領域中&#xff0c;支持向量機&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;作為一種經典且強大的分類算法&#xff0c;備受矚目。它憑借獨特的思想和卓越的性能&#xff0c;在模式識…

陶瓷陶器缺陷檢測VOC+YOLO格式938張2類別

數據集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路徑的txt文件&#xff0c;僅僅包含jpg圖片以及對應的VOC格式xml文件和yolo格式txt文件) 圖片數量(jpg文件個數)&#xff1a;938 標注數量(xml文件個數)&#xff1a;938 標注數量(txt文件個數)&#xff1a;938 標注…

通過Docker部署Prometheus + Grafana搭建監控平臺【超詳細版】

文章目錄 前言一、Prometheus、Grafana1.1 Prometheus簡介1.2 Grafana簡介1.3 Prometheus的核心組件1.4 Prometheus優點1.5 Prometheus缺點 二、部署Docker三、主節點部署PrometheusGrafana3.1 部署Prometheus3.2 防火墻開放端口3.3 訪問服務3.4 安裝Grafana3.5 防火墻開放端口…

華為云Flexus+DeepSeek征文|DeepSeek-V3商用服務開通教程

目錄 DeepSeek-V3/R1商用服務開通使用感受 DeepSeek-V3/R1商用服務開通 1、首先需要訪問ModelArts Studio_MaaS_大模型即服務_華為云 2、在網站右上角登陸自己的華為云賬號&#xff0c;如果沒有華為云賬號的話&#xff0c;則需要自己先注冊一個。 3、接著點擊ModelArts Stu…

ubuntu20.04修改默認網卡名稱為eth*

在Ubuntu 20.04.6中&#xff0c;遵循可預測網絡接口設備命名規則&#xff0c;網卡名稱默認可能是以"enp*"、"ens*"等開頭的格式&#xff0c;但是實際使用過程中&#xff0c;某些應用只能讀取eth*的網卡&#xff0c;需要修改。 查看網卡名稱 ip link show …

linux下抓包工具--tcpdump介紹

文章目錄 1. 前言2. 命令介紹3. 常見選項3.1. 接口與基本控制3.2 輸出控制3.3 文件操作3.4 高級調試 4. 過濾表達式4.1 協議類型4.2 方向與地址4.3 邏輯運算符 5. 典型使用場景5.1 網絡故障排查5.2 安全分析與入侵檢測5.3 性能分析與優化 linux下抓包工具--tcpdump介紹 1. 前言…

AI大模型-RAG到底能做些什么?

RAG常見的應用場景&#xff0c;有以下幾個方面&#xff1a; 1.智能客服系統&#xff1a;比如電商領域&#xff0c;對客戶提出的常見問題&#xff0c;進行自動回復。減少人力成本。 2.人力資源管理&#xff1a;一個新的員工&#xff0c;入職一家大型公司&#xff0c;公司中有各…

C++ unordered_set unordered_map

上篇文章我們講解了哈希表的實現&#xff0c;這節嘗試使用哈希表來封裝unordered_set/map 1. unordered_set/map的框架 封裝的過程實際上與set/map類似&#xff0c;在unordered_set/map層傳遞一個仿函數&#xff0c;用于取出key值 由于我們平常使用的都是unordered_set/map&…

REST API、FastAPI與Flask API的對比分析

以下是關于REST API、FastAPI與Flask API的對比分析&#xff0c;涵蓋架構設計、性能表現、開發效率等核心維度&#xff1a; 一、核心定位與架構差異 REST API 本質&#xff1a;一種基于HTTP協議的架構風格&#xff0c;強調資源化操作&#xff08;通過URI定位資源&#xff09;、…

實戰交易策略 篇二十二:情緒流龍頭交易策略

文章目錄 系列文章理論基礎股市的本質資金與情緒題材龍頭股龍頭戰法實戰技法情緒流技術分析擇時實操情緒流龍頭戰法要訣六大步驟九大術法買賣點量化標準系列文章 實戰交易策略 篇一:奧利弗瓦萊士短線交易策略 實戰交易策略 篇二:杰西利弗莫爾股票大作手操盤術策略 實戰交易策…

用VNA進行天線阻抗匹配的實例大圖

比如我這天線&#xff0c;在7Mhz時不諧振&#xff0c;我進行匹配 天線的阻抗很高&#xff0c;大約是在500-1400歐&#xff0c;而等效電容電感很小。 所以我考慮使用阻抗變壓器降低阻抗。 1。測試天線阻抗&#xff0c;電阻相當高&#xff0c;等效電容很小。 2。通過磁環匹配到…

一個讀寫excel的簡單程序(golang)

最近總有一些臨時統計的需求&#xff0c;比如其他團隊生產的一批數據&#xff0c;需要確認這批數據是否入到數倉&#xff0c;提供的列表就是一個excel&#xff0c;我們就需要讀取excel中的所有數據&#xff0c;之后查詢數倉數據庫確認這批數據是否存在&#xff0c;并分別將存在…