mysql 主從同步是一種數據復制技術,通過將主服務器數據同步到從服務器以實現一致性。同步過程涉及:1. 從服務器連接主服務器并請求二進制日志副本;2. 主服務器 i/o 線程將二進制日志更改發送到從服務器;3. 從服務器 sql 線程執行更改并更新其二進制日志位置。主從同步提供數據冗余、故障轉移、擴展性和負載平衡,但也會產生開銷和網絡連接需求等注意事項。
MySQL 主從同步原理
MySQL 主從同步是一種將數據庫數據從一臺稱為主服務器的機器復制到一臺或多臺稱為從服務器的機器的技術。它的目的是保持所有從服務器上的數據與主服務器上的一致。
工作原理
二進制日志(Binary Log):主服務器記錄所有已執行的數據更改,并作為二進制日志存儲。
I/O 線程:主服務器有一個 I/O 線程不斷將二進制日志中的更改讀入網絡緩沖區。
SQL 線程:從服務器有一個 SQL 線程不斷從網絡緩沖區讀取更改,并在自己的數據庫中執行它們。
同步過程
從服務器連接:從服務器連接到主服務器,并請求二進制日志的副本。
位置跟蹤:從服務器跟蹤它從二進制日志讀取的最后一個位置。
二進制日志傳輸:主服務器的 I/O 線程將二進制日志中的更改發送到從服務器的網絡緩沖區。
SQL 執行:從服務器的 SQL 線程將更改從網絡緩沖區讀取并執行到自己的數據庫中。
位置更新:每當從服務器執行完一個更改,它都會更新其二進制日志位置,以便它知道從何處開始讀取下一次更改。
好處
數據冗余:從服務器提供了主服務器數據的副本,增加了數據安全性和可用性。
故障轉移:如果主服務器發生故障,從服務器可以接管,減少停機時間。
擴展性:主從同步允許通過添加更多從服務器來擴展數據庫容量。
負載平衡:從服務器可以分擔主服務器上的讀取負載,從而提高性能。
注意事項
主從同步會產生一些開銷,因為從服務器必須執行從主服務器復制的更改。
保持主從服務器同步需要持續的網絡連接。
從服務器不能執行可能更改主服務器數據的操作(例如 DDL 語句)。