久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Mysql主從復制作用和工作原理詳解

138次閱讀
沒有評論

共計 1489 個字符,預計需要花費 4 分鐘才能閱讀完成。

一、什么是主從復制

主從復制,是用來建立一個和主數據庫完全一樣的數據庫環境,稱為從數據庫,主數據庫一般是準實時的業務數據庫。在最常用的 mysql 數據庫中,支持單項、異步賦值。在賦值過程中,一個服務器充當主服務器,而另外一臺服務器充當從服務器;此時主服務器會將更新信息寫入到一個特定的二進制文件中。

并會維護文件的一個索引用來跟蹤日志循環。這個日志可以記錄并發送到從服務器的更新中去。當一臺從服務器連接到主服務器時,從服務器會通知主服務器從服務器的日志文件中讀取最后一次成功更新的位置。然后從服務器會接收從哪個時刻起發生的任何更新,然后鎖住并等到主服務器通知新的更新。

二、主從復制的作用

一是確保數據安全;做數據的熱備,作為后備數據庫,主數據庫服務器故障后,可切換到從數據庫繼續工作,避免數據的丟失。

二是提升 I / O 性能;隨著日常生產中業務量越來越大,I/ O 訪問頻率越來越高,單機無法滿足,此時做多庫的存儲,有效降低磁盤 I / O 訪問的頻率,提高了單個設備的 I / O 性能。

三是讀寫分離,使數據庫能支持更大的并發;在報表中尤其重要。由于部分報表 sql 語句非常的慢,導致鎖表,影響前臺服務。如果前臺使用 master,報表使用 slave,那么報表 sql 將不會造成前臺鎖,保證了前臺速度。

三、主從復制的原理

主從復制中涉及的文件

主庫: binlog

從庫:
relaylog 中繼日志
master.info 主庫信息文件
relaylog.info relaylog 應用的信息

主從復制中涉及的三個線程

主庫:

Binlog_Dump Thread :

從庫:

SLAVE_IO_THREAD

SLAVE_SQL_THREAD

具體原理如圖所示:

Mysql 主從復制作用和工作原理詳解

1. 從數據庫執行 change master to 命令 (主數據庫的連接信息 + 復制的起點)
2. 從數據庫會將以上信息, 記錄到 master.info 文件
3. 從數據庫執行 start slave 命令, 立即開啟 SLAVE_IO_THREAD 和 SLAVE_SQL_THREAD 這兩個線程

4. 從數據庫 SLAVE_SQL_THREAD, 讀取 master.info 文件中的信息獲取到 IP,PORT,User,Pass,binlog 的位置信息

5. 從數據庫 SLAVE_IO_THREAD 請求連接主數據庫, 主數據庫專門提供一個 SLAVE_IO_THREAD, 負責和 SLAVE_SQL_THREAD 交互

6.SLAVE_IO_THREAD 根據 binlog 的位置信息, 請求主數據庫新的 binlog

7. 主數據庫通過 Binlog_DUMP_Thread 將最新的 binlog, 通過網絡 TP 給從數據庫的 SALVE_IO_THREAD

8.SLAVE_IO_THREAD 接收到新的 binlog 日志, 存儲到 TCP/IP 緩存, 立即返回 ACK 給主庫, 并更新 master.info

9.SLAVE_IO_THREAD 將 TCP/IP 緩存中數據, 轉儲到磁盤 relaylog 中.

10.SLAVE_SQL_THREAD 讀取 relay.info 中的信息, 獲取到上次已經應用過的 relaylog 的位置信息

11.SLAVE_SQL_THREAD 會按照上次的位置點回放最新的 relaylog, 再次更新 relay.info 信息

12. 從數據庫會自動 purge 應用過 relay 進行定期清理

一旦主從復制構建成功, 主數據庫當中發生了新的變化, 都會通過 slave_dump_THREAD 發送信號給 SLAVE_IO_THREAD, 增強了主從復制的實時性.

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持丸趣 TV。

向 AI 問一下細節

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-18發表,共計1489字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 庆云县| 彭山县| 祁东县| 安徽省| 泸溪县| 北票市| 鹤壁市| 潜山县| 高邑县| 钦州市| 四平市| 潮安县| 临漳县| 邵阳市| 西充县| 新竹县| 三台县| 大同县| 北安市| 平阴县| 孟津县| 惠水县| 得荣县| 德令哈市| 通化县| 嫩江县| 石渠县| 东丰县| 新沂市| 双鸭山市| 绥宁县| 远安县| 隆子县| 仁寿县| 辽源市| 普安县| 鱼台县| 丹东市| 察雅县| 福安市| 罗平县|