MySQL內建的複製功能是建立大型、高效能應用程式的基礎。將MySQL的資料分散到多個系統上去,這種分散式的機制,是透過將MySQL的某一台主機的數據,複製到其他的主機slaves上,並重新執行一邊來實現。
複製過程中,一個伺服器充當主伺服器,而一個或多個其他伺服器充當從伺服器。主伺服器將更新寫入二進位日誌文件,並維護文件的一個索引,以追蹤日誌循環。這些日誌可以記錄傳送到從伺服器的更新。當一個從伺服器連接到主伺服器時,它通知主伺服器,從伺服器在日誌中讀取的最後一次成功更新的位置。從伺服器接收從那時發生的任何更新,然後封鎖並等待主伺服器通知更新。
mysql主從複製存在的問題:
- 主庫宕機後,資料可能會遺失
- 從函式庫只有一個sql Thread,主函式庫寫壓力大,複製很可能延時
#回答:談到MySQL資料庫主從同步延遲原理,得從mysql的資料庫主從複製原理說起,mysql的主從複製都是單線程的操作,主庫對所有DDL和DML產生binlog,binlog是順序寫,所以效率很高;slave的Slave_IO_Running執行緒會到主函式庫取日誌,效率會比較高,slave的Slave_SQL_Running執行緒將主函式庫的DDL和DML操作都在slave實作。 DML和DDL的IO操作是隨機的,不是順序的,因此成本會很高,還可能是slave上的其他查詢產生lock爭用,由於Slave_SQL_Running也是單線程的,所以一個DDL卡主了,需要執行10分鐘,那麼所有之後的DDL會等待這個DDL執行完才會繼續執行,這就導致了延遲。有朋友會問:“主庫上那個相同的DDL也需要執行10分,為什麼slave會延時?”,答案是master可以並發,Slave_SQL_Running線程卻不可以。
#答:當主函式庫的TPS並發較高時,產生的DDL數量超過slave一個sql執行緒所能承受的範圍,那麼延時就產生了,當然還有就是可能與slave的大型query語句產生了鎖等待。
答:最簡單的減少slave同步延遲的方案就是在架構上做最佳化,盡量讓主函式庫的DDL快速執行。還有主函式庫是寫,對資料安全性較高,例如sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之類的設置,而slave則不需要這麼高的資料安全,完全可以講sync_binlog設定為0或關閉binlog, innodb_flushlog也可以設定為0來提高sql的執行效率。另外就是使用比主庫更好的硬體設備作為slave。
#1. 網路延遲
2. master負載
3. slave負載
一般的做法是,使用多台slave來分攤讀請求,再從這些slave中取一台專用的伺服器,只作為備份用,不進行其他任何操作,就能相對最大限度地達到'實時'的要求了
另外,再介紹2個可以減少延遲的參數
–slave-net-timeout=seconds
參數意義:當slave從主資料庫讀取log資料失敗後,等待多久重新建立連線並取得資料
slave_net_timeout單位為秒 預設為 3600秒
| slave_net_timeout | 3600
#–master-connect-retry=seconds
#
參數意義:當重新建立主從連線時,如果連線建立失敗,間隔多久後重試。
master-connect-retry單位為秒 預設為 60秒
通常配置以上2個參數可以減少網路問題導致的主從資料同步延遲
以上是如何解決mysql主從延遲的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Linux'scommandlinecanbemoresecurethanWindowsifmanagedcorrectly,butrequiresmoreuserknowledge.1)Linux'sopen-sourcenatureallowsforquicksecurityupdates.2)Misconfigurationcanleadtovulnerabilities.Windows'commandlineismorecontrolledbutlesscustomizable,with

本指南說明瞭如何在Linux的啟動下自動安裝USB驅動器,從而節省了時間和精力。 步驟1:確定您的USB驅動器 使用LSBLK命令列出所有塊設備。 您的USB驅動器可能會標記為 /dev /sdb1, /dev /sdc1等

跨平台應用程序已徹底改變了軟件開發,從而在Linux,Windows和MacOS等操作系統上實現了無縫功能。 這消除了根據您的設備切換應用程序的需求,提供一致的體驗

人工智能(AI)正在迅速改變許多部門,從醫療保健和金融到藝術和音樂等創意領域。 Linux具有開源性,適應性和性能功能,已成為首要的Platfo

尋找沒有圖形用戶界面(GUI)的快速,最小和高效的Linux分佈? 輕巧,無GUI-Linux發行版非常適合較舊的硬件或服務器和嵌入式系統(例如服務器和嵌入式系統)。他們消耗較少的res

Wine 10.0穩定版發布:在Linux上運行Windows應用更上一層樓 Wine,這款開源免費的應用程序,讓Linux用戶能夠在Unix/Linux類操作系統上運行Windows軟件和遊戲,迎來了10.0穩定版的發布!此版本已提供源代碼和二進制包下載,支持Linux、Windows和Mac等多種發行版。 這一版本凝聚了一年的辛勤工作和超過8600項改進,帶來了諸多令人興奮的提升。主要亮點包括: 增強對藍牙設備的支持。 提升對HID輸入設備的支持。 優化了32位和64位應用程序的運行性能。

該教程通過在RHEL 8.x或9.x上安裝SQL Server 2022,通過SQLCMD命令行工具,數據庫創建和基本查詢連接。 先決條件 開始之前,請確保: 支持的RHEL版本(RHEL 8或9)。 Sudo

Mozilla Thunderbird 135:功能強大的跨平台郵件客戶端 Mozilla Thunderbird是一款免費、開源、跨平台的郵件、日曆、新聞、聊天和聯繫人管理客戶端,旨在高效處理多個電子郵件帳戶和新聞源。 2025年2月5日,Mozilla發布了Thunderbird 135版本,引入了多項新功能、性能改進和安全修復。 Thunderbird 135 主要特性: Linux二進製文件的XZ打包: 文件更小,解包更快,並更好地與現代發行版集成。 Cookie存儲支持: 創建空間時


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

Dreamweaver Mac版
視覺化網頁開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能