0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

mysql主從復(fù)制的原理

科技綠洲 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2023-11-16 14:18 ? 次閱讀

MySQL主從復(fù)制是一種數(shù)據(jù)庫(kù)復(fù)制技術(shù),它允許將一個(gè)MySQL數(shù)據(jù)庫(kù)的更新操作自動(dòng)復(fù)制到其他MySQL數(shù)據(jù)庫(kù)上的過程。主要通過MySQL的binlog(二進(jìn)制日志)和relay log(中繼日志)來(lái)實(shí)現(xiàn)數(shù)據(jù)的復(fù)制。

一、主從復(fù)制的基本概念

  1. 主數(shù)據(jù)庫(kù)(Master): 負(fù)責(zé)接收客戶端的寫操作,并將這些操作記錄到binlog中。
  2. 從數(shù)據(jù)庫(kù)(Slave): 從主數(shù)據(jù)庫(kù)復(fù)制binlog中的數(shù)據(jù),并將其重放在自己的數(shù)據(jù)庫(kù)中。
  3. binlog(Binary Log): 是MySQL中用于記錄主數(shù)據(jù)庫(kù)上的所有數(shù)據(jù)變更的二進(jìn)制文件。它記錄的是主數(shù)據(jù)庫(kù)上的事務(wù)操作,包括增刪改操作。
  4. relay log(Relay Log): 是從數(shù)據(jù)庫(kù)中的日志文件,用于記錄復(fù)制過程中接收到的binlog事件。
  5. 主從復(fù)制過程:主數(shù)據(jù)庫(kù)將binlog傳送給從數(shù)據(jù)庫(kù),從數(shù)據(jù)庫(kù)接收binlog并寫入relay log,然后從relay log中取出binlog事件并應(yīng)用到自己的數(shù)據(jù)庫(kù)中,實(shí)現(xiàn)數(shù)據(jù)的復(fù)制。

二、主從復(fù)制的詳細(xì)流程
MySQL主從復(fù)制的詳細(xì)流程主要包括主庫(kù)數(shù)據(jù)變更、binlog日志產(chǎn)生與傳輸、從庫(kù)接收與解析、重放到從庫(kù)的四個(gè)階段。

  1. 主庫(kù)數(shù)據(jù)變更階段:
    當(dāng)主庫(kù)接收到客戶端的寫操作(如增刪改操作)時(shí),主庫(kù)會(huì)在事務(wù)開始時(shí)生成一個(gè)全局唯一的事務(wù)ID(GTID)。然后主庫(kù)對(duì)寫操作進(jìn)行數(shù)據(jù)變更,并將這些數(shù)據(jù)變更記錄到binlog中。binlog包含了記錄寫操作的詳細(xì)信息,如操作類型、操作的數(shù)據(jù)、事務(wù)ID等。
  2. binlog日志產(chǎn)生與傳輸階段:
    主庫(kù)將binlog日志按照預(yù)設(shè)的策略(行復(fù)制、語(yǔ)句復(fù)制)寫入binlog文件,并將該文件中新生成的部分定期地發(fā)送到從庫(kù)。從庫(kù)會(huì)根據(jù)已經(jīng)接收到的binlog文件標(biāo)記自己已經(jīng)接收到的位置。主庫(kù)每次發(fā)送binlog文件后會(huì)記錄當(dāng)前傳輸?shù)腷inlog位置,下次傳輸時(shí)從上次記錄的位置繼續(xù)傳輸。
  3. 從庫(kù)接收與解析階段:
    從庫(kù)會(huì)定期從主庫(kù)復(fù)制binlog的發(fā)生變更,并按照順序接收到binlog文件。從庫(kù)通過解析binlog文件將其中的binlog事件(如增刪改操作)解析為SQL語(yǔ)句,并將這些SQL語(yǔ)句記錄到relay log中。relay log是從庫(kù)的中繼日志,記錄了從庫(kù)接收到的binlog事件。
  4. 重放到從庫(kù)階段:
    從庫(kù)根據(jù)relay log中的SQL語(yǔ)句,按照順序進(jìn)行重放執(zhí)行,將這些SQL語(yǔ)句應(yīng)用到從庫(kù)的數(shù)據(jù)庫(kù)中,以保持與主庫(kù)數(shù)據(jù)的一致性。從庫(kù)的重放是在一個(gè)事務(wù)內(nèi)進(jìn)行的,保證了數(shù)據(jù)的原子性。

總結(jié):
MySQL主從復(fù)制的原理可以概括為:主庫(kù)接收到客戶端的寫操作后,將這些操作記錄到binlog中;從庫(kù)定期接收主庫(kù)的binlog并將其記錄到relay log中;從relay log中解析出SQL語(yǔ)句并重放到從庫(kù)的數(shù)據(jù)庫(kù)中,從而保持主從數(shù)據(jù)的一致性。通過這樣的復(fù)制過程,可以實(shí)現(xiàn)數(shù)據(jù)的備份、負(fù)載均衡和故障恢復(fù)等功能。這種主從復(fù)制的機(jī)制在實(shí)際應(yīng)用中得到了廣泛的應(yīng)用,是數(shù)據(jù)庫(kù)高可用和容災(zāi)的重要手段之一。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    753

    瀏覽量

    44032
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3752

    瀏覽量

    64233
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    797

    瀏覽量

    26399
  • 日志
    +關(guān)注

    關(guān)注

    0

    文章

    138

    瀏覽量

    10626
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    瑞吉外賣項(xiàng)目?jī)?yōu)化2-02-MySQL主從復(fù)制_介紹

    MySQL
    電子學(xué)習(xí)
    發(fā)布于 :2023年01月08日 10:30:53

    瑞吉外賣項(xiàng)目?jī)?yōu)化2-04-MySQL主從復(fù)制_測(cè)試

    MySQL
    電子學(xué)習(xí)
    發(fā)布于 :2023年01月08日 10:43:37

    MySQL的幾種復(fù)制配置

    MySQL主從復(fù)制、主主復(fù)制、雙主多從配置
    發(fā)表于 04-16 09:50

    基于二進(jìn)制安裝MySQL主從復(fù)制

    二進(jìn)制安裝MySQL實(shí)現(xiàn)主從復(fù)制
    發(fā)表于 03-10 09:43

    mysql主從復(fù)制

    mysql 主從復(fù)制
    發(fā)表于 04-28 14:30

    基于mycat的Mysql主從復(fù)制讀寫分離全攻略

    基于mycat的Mysql主從復(fù)制讀寫分離全攻略
    發(fā)表于 09-08 10:10 ?4次下載
    基于mycat的<b class='flag-5'>Mysql</b><b class='flag-5'>主從復(fù)制</b>讀寫分離全攻略

    如何完成Mysql主從復(fù)制的在線配置

    Percona XtraBackup(簡(jiǎn)稱PXB)是 Percona 公司開發(fā)的一個(gè)用于 MySQL 數(shù)據(jù)庫(kù)物理熱備的備份工具,支持 MySQl(Oracle)、Percona Server 和 MariaDB,并且全部開源,可謂是業(yè)界良心,我們 RDS
    的頭像 發(fā)表于 07-29 18:27 ?2136次閱讀
    如何完成<b class='flag-5'>Mysql</b><b class='flag-5'>主從復(fù)制</b>的在線配置

    一文詳解MySQL主從復(fù)制

    數(shù)據(jù)備份:為了避免單點(diǎn)故障,增加一個(gè)從服務(wù)器,用來(lái)復(fù)制主服務(wù)器上的數(shù)據(jù)。
    的頭像 發(fā)表于 01-17 09:13 ?795次閱讀

    MySQL主從復(fù)制原理詳解

    簡(jiǎn)單講,MySQL主從復(fù)制就是數(shù)據(jù)寫入一臺(tái)服務(wù)器(主服務(wù)器)后,同時(shí)還會(huì)額外寫入另外的服務(wù)器(從服務(wù)器)。也就是說(shuō)數(shù)據(jù)會(huì)寫多份,這樣做的目的主要有兩個(gè):
    的頭像 發(fā)表于 02-06 10:27 ?1051次閱讀

    一個(gè)操作把MySQL主從復(fù)制整崩了

    最近公司某項(xiàng)目上反饋mysql主從復(fù)制失敗,被運(yùn)維部門記了一次大過,影響到了項(xiàng)目的驗(yàn)收推進(jìn),那么究竟是什么原因?qū)е碌哪兀慷?b class='flag-5'>主從復(fù)制的原理又是什么呢?本文就對(duì)排查分析的過程做一個(gè)記錄。
    的頭像 發(fā)表于 05-11 11:14 ?514次閱讀
    一個(gè)操作把<b class='flag-5'>MySQL</b><b class='flag-5'>主從復(fù)制</b>整崩了

    mysql主從復(fù)制三種模式

    MySQL主從復(fù)制是一種常見的數(shù)據(jù)同步方式,它可以實(shí)現(xiàn)將一個(gè)數(shù)據(jù)庫(kù)的更改同步到其他多個(gè)數(shù)據(jù)庫(kù)的功能。主從復(fù)制可以提高數(shù)據(jù)庫(kù)的可用性和性能,以及提供故障恢復(fù)和數(shù)據(jù)備份的支持。在MySQL
    的頭像 發(fā)表于 11-16 14:04 ?1407次閱讀

    mysql主從復(fù)制主要有幾種模式

    MySQL主從復(fù)制MySQL數(shù)據(jù)庫(kù)中常用的一種數(shù)據(jù)復(fù)制方式,用于實(shí)現(xiàn)數(shù)據(jù)的備份、負(fù)載均衡、故障恢復(fù)等目的。主從復(fù)制主要有以下幾種模式: 異
    的頭像 發(fā)表于 11-16 14:15 ?1124次閱讀

    mysql主從復(fù)制 混合類型的復(fù)制

    MySQL主從復(fù)制是一種常用的數(shù)據(jù)復(fù)制技術(shù),可以實(shí)現(xiàn)數(shù)據(jù)從一個(gè)MySQL服務(wù)器(主服務(wù)器)復(fù)制到另一個(gè)M
    的頭像 發(fā)表于 11-16 14:20 ?517次閱讀

    mysql主從復(fù)制數(shù)據(jù)不一致怎么辦

    MySQL主從復(fù)制是一種常用的數(shù)據(jù)復(fù)制技術(shù),用于實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)同步和分布式部署。然而,在實(shí)際應(yīng)用中,主從復(fù)制過程中出現(xiàn)數(shù)據(jù)不一致的情況也是很常見的。本文將從以下幾個(gè)方面介紹
    的頭像 發(fā)表于 11-16 14:35 ?2212次閱讀

    配置MySQL主從復(fù)制和讀寫分離

    配置MySQL主從復(fù)制和讀寫分離
    的頭像 發(fā)表于 10-23 11:44 ?247次閱讀
    配置<b class='flag-5'>MySQL</b><b class='flag-5'>主從復(fù)制</b>和讀寫分離