mysql主從複製原理:首先主庫發送更新事件到從庫;然後從庫讀取更新記錄,並執行更新記錄;最後使得從庫的內容與主庫保持一致。
相關免費學習推薦:mysql影片教學
#mysql主從複製原理:
為什麼要做主從複製
在業務複雜的系統中,有這麼一個情景,有一句sql語句需要鎖表,導致暫時不能使用讀的服務,那麼就很影響運行中的業務,使用主從複製,讓主庫負責寫,從庫負責讀,這樣,即使主庫出現了鎖定表的情景,透過讀取從庫也可以確保業務的正常運作。
做資料的熱備,主庫宕機後能夠及時替換主庫,保證業務可用性。
架構的擴充。業務量越來越大,I/O存取頻率過高,單機無法滿足,此時做多庫的存儲,降低磁碟I/O存取的頻率,提高單一機器的I/O效能。
MySQL主從複製的流程
#主庫db的更新事件(update、insert、 delete)被寫到binlog
主庫創建一個binlog dump thread,把binlog的內容發送到從庫
從庫啟動並發起連接,連接到主庫
#從庫啟動之後,建立一個I/O線程,讀取主庫傳過來的binlog內容並寫入到relay log
從庫啟動之後,建立一個SQL線程,從relay log裡面讀取內容,從Exec_Master_Log_Pos位置開始執行讀取到的更新事件,將更新內容寫入到slave的db
註:上述流程為相對流程,並非絕對流程
MySQL主從複製的原理
MySQL主從複製是一個非同步的複製過程,主庫發送更新事件到從庫,從庫讀取更新記錄,並執行更新記錄,使得從庫的內容與主庫保持一致。
binlog:binary log,主庫中保存所有更新事件日誌的二進位。 binlog是資料庫服務啟動的一刻起,保存資料庫所有變更記錄(資料庫結構和內容)的檔案。在主庫中,只要有更新事件出現,就會依序寫入binlog中,之後會推送到從庫中作為從庫進行複製的資料來源。
binlog輸出執行緒:每當有從庫連接到主庫的時候,主庫都會建立一個執行緒然後發送binlog內容到從庫。對於每一個即將傳送給從函式庫的sql事件,binlog輸出執行緒會將其鎖住。一旦該事件被線程讀取完之後,該鎖會被釋放,即使在該事件完全發送到從庫的時候,該鎖也會被釋放。
在從函式庫中,當複製開始時,從函式庫就會建立從函式庫I/O執行緒和從函式庫的SQL執行緒進行複製處理。
從庫I/O線程:當START SLAVE語句在從庫開始執行之後,從庫創建一個I/O線程,該線程連接到主庫並請求主庫發送binlog裡面的更新記錄到從庫上。從庫I/O執行緒讀取主庫的binlog輸出執行緒發送的更新並拷貝這些更新到本機文件,其中包括relay log文件。
從函式庫的SQL執行緒:從函式庫建立一個SQL線程,這個執行緒讀取從函式庫I/O執行緒寫到relay log的更新事件並執行。
綜上所述,可知:
對於每一個主從複製的連接,都有三個線程。擁有多個從庫的主庫為每一個連接到主庫的從庫創建一個binlog輸出線程,每一個從庫都有它自己的I/O線程和SQL線程。
從函式庫透過建立兩個獨立的線程,使得在進行複製時,從庫的讀和寫進行了分離。因此,即使負責執行的執行緒運行較慢,負責讀取更新語句的執行緒並不會因此變得緩慢。比方說,如果從庫有一段時間沒運行了,當它在此啟動的時候,儘管它的SQL線程執行比較慢,它的I/O線程可以快速地從主庫裡讀取所有的binlog內容。這樣一來,即使從庫在SQL線程執行完所有讀取到的語句前停止運行了,I/O線程也至少完全讀取了所有的內容,並將其安全地備份在從庫本地的relay log ,隨時準備在從庫下一次啟動的時候執行語句。
以上是mysql主從複製原理是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

MySQL使用的是GPL許可證。 1)GPL許可證允許自由使用、修改和分發MySQL,但修改後的分發需遵循GPL。 2)商業許可證可避免公開修改,適合需要保密的商業應用。

選擇InnoDB而不是MyISAM的情況包括:1)需要事務支持,2)高並發環境,3)需要高數據一致性;反之,選擇MyISAM的情況包括:1)主要是讀操作,2)不需要事務支持。 InnoDB適合需要高數據一致性和事務處理的應用,如電商平台,而MyISAM適合讀密集型且無需事務的應用,如博客系統。

在MySQL中,外鍵的作用是建立表與表之間的關係,確保數據的一致性和完整性。外鍵通過引用完整性檢查和級聯操作維護數據的有效性,使用時需注意性能優化和避免常見錯誤。

MySQL中有四種主要的索引類型:B-Tree索引、哈希索引、全文索引和空間索引。 1.B-Tree索引適用於範圍查詢、排序和分組,適合在employees表的name列上創建。 2.哈希索引適用於等值查詢,適合在MEMORY存儲引擎的hash_table表的id列上創建。 3.全文索引用於文本搜索,適合在articles表的content列上創建。 4.空間索引用於地理空間查詢,適合在locations表的geom列上創建。

toCreateAnIndexinMysql,usethecReateIndexStatement.1)forasingLecolumn,使用“ createIndexIdx_lastNameEnemployees(lastName); 2)foracompositeIndex,使用“ createIndexIndexIndexIndexIndexDx_nameOmplayees(lastName,firstName,firstName);” 3)forauniqe instex,creationexexexexex,

MySQL和SQLite的主要區別在於設計理念和使用場景:1.MySQL適用於大型應用和企業級解決方案,支持高性能和高並發;2.SQLite適合移動應用和桌面軟件,輕量級且易於嵌入。

MySQL中的索引是數據庫表中一列或多列的有序結構,用於加速數據檢索。 1)索引通過減少掃描數據量提升查詢速度。 2)B-Tree索引利用平衡樹結構,適合範圍查詢和排序。 3)創建索引使用CREATEINDEX語句,如CREATEINDEXidx_customer_idONorders(customer_id)。 4)複合索引可優化多列查詢,如CREATEINDEXidx_customer_orderONorders(customer_id,order_date)。 5)使用EXPLAIN分析查詢計劃,避

在MySQL中使用事務可以確保數據一致性。 1)通過STARTTRANSACTION開始事務,執行SQL操作後用COMMIT提交或ROLLBACK回滾。 2)使用SAVEPOINT可以設置保存點,允許部分回滾。 3)性能優化建議包括縮短事務時間、避免大規模查詢和合理使用隔離級別。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

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

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器