MySql主從同步延遲怎么辦?

文章目錄

    • 什么是MySQL主從架構
      • 主從架構的組成
      • 工作原理
      • 主從復制的步驟
      • 主從架構的優點
      • 主從架構的缺點
    • 什么是主從同步延遲
    • 為什么會導致主從延遲
    • 主從延時的排查和解決
    • 如果發現主從數據不一致怎么辦?

我們常說的業務量越來越大,I/O訪問頻率過高,單機無法滿足,就會用到讀寫分離之類的多庫方案
所以我們首先要知道什么是MySQL主從架構

什么是MySQL主從架構

通過字面上來看,最起碼要有兩臺數據庫,并且他們的關系是主與從。MySQL主從復制就是將數據庫群中一臺或多臺服務器作為主(master)數據庫,其他數據庫作為從(slave)數據庫,然后指向主庫,實時同步主庫中的數據;當主庫數據發生變化時,會將變化的數據實時同步到一個或多個從庫。
這是一種數據庫復制和分布式存儲的解決方案,核心是將數據從一個主服務器(Master)復制到一個或多個從服務器(Slave)。這種架構主要用于數據備份、讀寫分離、負載均衡和高可用性。當然凡事都有兩面性,如數據延遲和寫入瓶頸,因此在設計系統時需要根據實際需求進行權衡
在這里插入圖片描述

主從架構的組成

主服務器(Master):負責處理寫操作(INSERT、UPDATE、DELETE 等),并將這些更改記錄到二進制日志(binary log)中
從服務器(Slave):通過讀取并應用主服務器的二進制日志來復制數據,通常用于處理讀操作(SELECT)

工作原理

二進制日志(Binary Log):主服務器上的所有更改都會記錄在一個二進制日志中
中繼日志(Relay Log):從服務器從主服務器接收二進制日志的內容,并將其存儲在自己的中繼日志中
I/O線程:從服務器上的I/O線程負責從主服務器讀取二進制日志,并寫入中繼日志
SQL線程:從服務器上的SQL線程負責讀取中繼日志,并將這些更改應用到從服務器的數據庫中

主從復制的步驟

啟動復制:在主服務器上啟用二進制日志,并創建一個具有復制權限的用戶
配置從服務器:配置從服務器,指定主服務器的地址、登錄憑證等,并指定復制的起點
數據同步:在開始復制之前,通常需要將主服務器上的數據同步到從服務器
啟動復制進程:在從服務器上啟動復制進程,開始復制操作

主從架構的優點

數據冗余:提供數據備份,增加數據安全性
讀寫分離:通過從服務器處理讀請求,可以提高系統的讀取性能
負載均衡:分散數據庫的訪問壓力,提高系統整體的處理能力
高可用性:當主服務器出現故障時,可以快速切換到從服務器,減少系統停機時間

主從架構的缺點

數據延遲:從服務器復制數據可能會有延遲,導致數據不一致的問題
故障恢復:當主服務器出現故障時,需要手動或通過自動化工具進行故障轉移
寫入瓶頸:所有的寫操作都必須通過主服務器,可能會成為系統的瓶頸

什么是主從同步延遲

那么再說回什么是主從同步延遲,其實只要使用到了主從設計,基本都會有主從延遲的問題,只是說延遲的嚴重的程度不一樣而已

從字面詞匯解釋:主從延時,通常指的是在數據庫的主從復制架構中,從服務器(Slave)在接收并應用主服務器(Master)上的數據變更時所經歷的時間延遲。具體來說,當主服務器上的數據發生變化后,這些變更需要通過復制機制同步到從服務器,而從服務器處理這些變更并完成數據同步所需的時間就構成了所謂的延時

一般來說幾百毫秒以內可能都是能接受的范圍

為什么會導致主從延遲

  1. 負載過高:這里其實不管主庫還是從庫的負載比較高,都可能會導致延遲。這里先額外說一個事情,很多人覺得主庫負責寫,從庫只負責讀,所以主庫的配置需要高一點,從庫低一點也無所謂,但其實這是一個誤區,你要清楚所有寫在主庫的數據,在從庫都需要寫一遍,而且要求時延低的話,從庫的壓力其實并不比主庫低。所以如果主庫的并發量壓力較高時,可能會導致從庫來不及寫入
    或者本身從庫的負載較高了,因為從庫都是串行去寫入了,為了保證數據一致性,前面也說了其實從庫就是把主庫執行過的sql也同樣的按順序執行一次,如果中途可能因為執行其他查詢或者某一個復雜的事務等,也可能導致無法及時處理同步過來的數據
  2. 網絡延遲:主從服務器之間的網絡延遲也會影響同步效率,這個字面也很好理解
  3. 硬件性能不足:如果從庫的硬件性能不足,處理同步數據的速度會受到影響,這個在第一點里面也做過解釋
  4. MySQL配置不合理:如sync_binlog和innodb_flush_log_at_trx_commit等配置不當可能導致延遲
  5. 鎖等待:從庫在執行同步操作時可能遇到鎖等待,特別是大型查詢語句

主從延時的排查和解決

先確認復制是否正常在運行,然后就是分析導致延時的原因

  • 使用show slave status命令,了解當前的延時情況
    • 查看Seconds_Behind_Master參數 NULL:表示I/O線程或SQL線程發生故障。0:表示主從復制狀態正常,無延遲。正值:表示主從已經出現延時,數值越大,延遲越嚴重
    • Slave_IO_Running 和 Slave_SQL_Running:這兩個狀態都應該是Yes,如果不是,說明復制過程中斷了
    • Last_IO_Error 和 Last_SQL_Error:如果復制出錯,這里會顯示錯誤信息
  • 檢查主從機器之間的網絡延遲,查看是否出現問題,如使用ping或traceroute命令來測試網絡連接
  • 檢查帶寬限制,這個雖然一般不會出現,但是高負載時也可能帶寬不夠導致復制延遲
  • 檢查主服務器的二進制日志和從服務器的中繼日志文件大小,如果日志文件過大,可能會導致處理緩慢
  • 檢查服務器資源是否有大的波動

解決辦法就是先根據問題分析的原因來做不同的處理應對

  • 優化主從服務器的硬件配置,提升處理能力
  • 調整MySQL的復制配置,如修改sync_binlog和innodb_flush_log_at_trx_commit參數,以平衡數據安全性和性能
  • 網絡優化,確保主從服務器之間的網絡連接穩定且帶寬充足
  • 業務邏輯優化,避免大事務和長耗時操作
  • 調整中繼日志的配置,比如日志的大小和刷新策略,減少服務器的I/O壓力

如果發現主從數據不一致怎么辦?

1、首先是檢查主從同步是否還在正常執行
2、檢查延時問題,是否是延時導致的
3、檢查最新的數據,看是最后的數據沒同步到還是中間的數據沒同步到
4、確認主從服務器的錯誤日志,看是否有相關的異常
5、如果數據不一致且無法通過簡單的修復來解決,可能需要重新同步數據:
停止復制:在從服務器上執行STOP SLAVE;命令停止復制
數據備份與恢復:使用mysqldump或其他備份工具從主服務器備份數據,并在從服務器上恢復
重置復制:在從服務器上重置復制狀態,重新配置復制并啟動

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

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

相關文章

中軟國際加入龍蜥社區,促進“技術+生態”雙向賦能

近日,中軟國際有限公司(簡稱“中軟國際”)簽署了 CLA(Contributor License Agreement,貢獻者許可協議),正式加入龍蜥社區(OpenAnolis)。 中軟國際創立于 2000 年&#x…

兩工種入選!廣東省產教評技能生態鏈企業自主評價評價機構名單和可評價職業

7月4日,廣州市人力資源和社會保障局發布《廣東省產教評技能生態鏈企業自主評價評價機構名單和可評價職業(工種)范圍》廣東泰迪智能科技股份有限公司“計算機程序設計員”、“人工智能訓練師”入選。 詳細職業名稱與等級如下: 計算…

小白 | Linux安裝java8

一、更新包列表 sudo apt update 二、安裝 Java 8 sudo apt install openjdk-8-jdk 安裝問題 遇見Unable to locate package openjdk-8-jdk錯誤 1.添加 PPA 存儲庫 sudo add-apt-repository ppa:openjdk-r/ppa sudo apt update 2.重新嘗試安裝 sudo apt install openjdk8-jdk…

Zabbix動作與媒介

目錄 前言 1. 動作的基本概念 2. 動作的常見用途 一. 環境準備 二. 創建動作 三. 添加媒介 前言 在 Zabbix 中,動作(Actions)用于在特定事件發生時執行一系列預定義的操作,比如發送通知、執行腳本等。動作通常與觸發器&…

原神4.6單機版【完全無腦搭建】純單機*穩定版*

版本介紹 版本3.7、4.0、4.0、4.4、4.5、4.6穩定版【過分追新并不穩,合理才完美】 獨家原神,游戲內自帶劇情任務,完美仿官,一比一完美復制! 已經擁有完美劇情、任務、副本、卡池、深淵、全物品、和全部功能和皮膚。 …

使用C++實現求職者和部門之間最大配對

某人力資源公司收到了m個合格的求職者的簡歷,要將他們分發給n個部門,每份簡歷符合一個或者幾個部門的要求,但是每個人的簡歷最多送給k個部門,每個部門最多可以接受d份簡歷,如何實現求職者和部門之間的最大配對。使用了…

廢水除銥,銥吸附樹脂

廢水除銥是環境保護和資源回收的重要任務之一。由于銥是貴金屬之一,具有極高的經濟價值,因此開發高效的廢水除銥技術具有重要意義。以下是一些建議的廢水除銥方法: 1. 沉淀法:向廢水中添加適量的沉淀劑,如硫酸鈉、氯…

redis學習(003 數據結構和通用命令)

黑馬程序員Redis入門到實戰教程,深度透析redis底層原理redis分布式鎖企業解決方案黑馬點評實戰項目 總時長 42:48:00 共175P 此文章包含第8p-第p9的內容 文章目錄 數據結構通用命令keys命令del命令exists命令expire命令ttl命令 數據結構 通用命令 help generic …

Visual Studio編譯優化選項

目錄 /O1 和 /O2 /Ox 內聯函數 虛函數優化 代碼重排 循環優化 鏈接時間優化 代碼分割 數學優化 其他優化選項 在Visual Studio中,編譯優化選項是用于提高程序性能的重要工具。編譯器提供了多種優化級別和選項,可以根據不同的需要進行選擇。 在…

光伏仿真系統不可忽視的功能:建模與仿真!

光伏仿真系統具備多種功能,能夠支持對光伏發電系統進行深入研究和優化。為什么說建模與仿真功能是最不可忽視的呢?我們先來看看建模功能。 光伏仿真系統可以通過光伏插件或擴展程序,創建精確的光伏組件模型,包括光伏板、支架、逆變…

python輸出個人自我介紹

需求 使用input()函數從鍵盤輸入姓名、年齡,座右銘,并使用print()函數輸出到控制臺 nameinput(請輸入您的姓名:) ageinput(請輸入您的年齡:) mottoinput(請輸入您的座右銘:) print(------------自我介紹------------…

5G 連接存在漏洞,移動設備易被繞過或受到 DoS 攻擊

無線服務提供商優先考慮正常運行時間和延遲時間,有時以犧牲安全性為代價,允許攻擊者利用這一漏洞竊取數據,甚至更糟。 由于 5G 技術存在漏洞,移動設備面臨著數據被肆意竊取和拒絕服務的風險。 在即將于拉斯維加斯舉行的「黑帽 2…

Pandas 入門 15 題

Pandas 入門 15 題 1. 相關知識點1.1 修改DataFrame列名1.2 獲取行列數1.3 顯示前n行1.4 條件數據選取值1.5 創建新列1.6 刪去重復的行1.7 刪除空值的數據1.9 修改列名1.10 修改數據類型1.11 填充缺失值1.12 數據上下合并1.13 pivot_table透視表的使用1.14 melt透視表的使用1.1…

C#桌面應用開發:番茄定時器

C#桌面應用開發:番茄定時器 1、環境搭建和工程創建: 步驟一:安裝visual studio2022 步驟二:新建工程 2、制作窗體部件 *踩過的坑: (1)找不到工具箱控件,現象如下:…

軟件測試之接口自動化測試實戰(完整版)

🍅 視頻學習:文末有免費的配套視頻可觀看 🍅 點擊文末小卡片,免費獲取軟件測試全套資料,資料在手,漲薪更快 自從看到阿里云性能測試 PTS 接口測試開啟免費公測,就想著跟大家分享交流一下如何實現…

通義靈碼入選 2024 世界人工智能大會最高榮譽「鎮館之寶」

7 月 4 日,2024 上海世界人工智能大會正式開幕,并揭曉了今年的「鎮館之寶」名單,通義靈碼入選,是首個入圍該名單的 AI 編程助手。 鎮館之寶是世界人工智能大會展覽的最高榮譽,從科技含量、市場前景、創新性以及社會經濟…

OV通配符證書用于什么單位

OV(Organization Validation)通配符SSL證書是一種專門為組織或企業設計的SSL證書類型,它不僅提供了標準的SSL加密功能,還包含了對組織身份的驗證。這種證書非常適合以下幾種類型的單位使用: 企業級網站: …

【穩定檢索/投稿優惠】2024年教育、人文發展與藝術國際會議(EHDA 2024)

2024 International Conference on Education, Humanities Development and Arts 2024年教育、人文發展與藝術國際會議 【會議信息】 會議簡稱:EHDA 2024 大會時間:點擊查看 截稿時間:點擊查看 大會地點:中國北京 會議官網&#…

Linux系統中卸載GitLab

在Linux系統中卸載GitLab,主要可以通過包管理器(如apt、yum、rpm等)來實現,但具體步驟可能會因GitLab的安裝方式(如使用包管理器安裝、從源代碼安裝、使用Docker等)和Linux發行版的不同而有所差異。以下是一…

直飲水也要燒開飲用嗎?

某天上班,同事跟我說他的爸爸喝瓶裝水都要燒開了后再喝。 這種行為震驚了小編。 好像很多上一輩的人有種執念,那就是水一定要燒開了喝。 不僅是因為習慣,也是他們的觀念已經根深蒂固,認為燒開后的水喝起來才健康。 其實水不一…