国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL高級(jí)第十七篇:數(shù)據(jù)庫(kù)主從復(fù)制原理及保證數(shù)據(jù)一致性

這篇具有很好參考價(jià)值的文章主要介紹了MySQL高級(jí)第十七篇:數(shù)據(jù)庫(kù)主從復(fù)制原理及保證數(shù)據(jù)一致性。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、概述

1. 提升數(shù)據(jù)庫(kù)的并發(fā)能力

  • 在實(shí)際工作中,我們常常將Redis作為緩存與MySQL來(lái)配合使用,當(dāng)有請(qǐng)求的時(shí)候,首先會(huì)從緩存中進(jìn)行查找,如果存在就直接取出,如果不存在再訪問(wèn)數(shù)據(jù)庫(kù)。
  • 這樣就提升了讀取的效率,也減少了對(duì)后端數(shù)據(jù)庫(kù)的訪問(wèn)壓力。
    MySQL高級(jí)第十七篇:數(shù)據(jù)庫(kù)主從復(fù)制原理及保證數(shù)據(jù)一致性
  • 此外,對(duì)于一般數(shù)據(jù)庫(kù)應(yīng)用而言,都是讀多寫少的,當(dāng)數(shù)據(jù)庫(kù)讀取數(shù)據(jù)壓力較大時(shí),我們可以從成本較小的方案開始優(yōu)化,可以首先考慮優(yōu)化SQL和索引,其次就是緩存策略,最后才是主從架構(gòu)。

2. 主從復(fù)制的作用?

  • 第一:讀寫分離
    • 在讀多寫少的情況下,可以采用讀寫分離,主庫(kù)當(dāng)做寫庫(kù),然后根據(jù)實(shí)際需要,選擇使用多個(gè)讀庫(kù),分散讀的壓力,提高并發(fā)性。
  • 第二:數(shù)據(jù)備份
    • 主從復(fù)制其實(shí)就相當(dāng)于一種熱備份的機(jī)制。
  • 第三:實(shí)現(xiàn)高可用
    • 數(shù)據(jù)備份其實(shí)就是一種冗余機(jī)制,當(dāng)主服務(wù)器出現(xiàn)故障是時(shí),可以切換到從服務(wù)器上,提高服務(wù)器可用性。

二、主從復(fù)制原理

  • 實(shí)際上主從同步的原理就是基于binlog進(jìn)行數(shù)據(jù)同步的。在主從復(fù)制過(guò)程中,會(huì)基于3個(gè)線程來(lái)操作,一個(gè)主庫(kù)線程,兩個(gè)從庫(kù)線程。
  • 二進(jìn)制日志轉(zhuǎn)儲(chǔ)線程是一個(gè)主庫(kù)線程。 當(dāng)從庫(kù)線程連接的時(shí)候,主庫(kù)可以將二進(jìn)制日志發(fā)送給從庫(kù),當(dāng)主庫(kù)讀取事件的時(shí)候,會(huì)在Binlog上加鎖,讀取完成之后,再將鎖釋放掉。
  • 從庫(kù)I/O線程會(huì)連接到主庫(kù),向主庫(kù)發(fā)送請(qǐng)求更新Binlog。 這時(shí)從庫(kù)的I/O線程就可以讀取到主庫(kù)的二進(jìn)制日志轉(zhuǎn)儲(chǔ)線程發(fā)送的Binlog更新部分,并且拷貝到本地的中繼日志。
  • 從庫(kù)SQL線程會(huì)讀取從庫(kù)中的中繼日志,并且執(zhí)行日志中的事件,將從庫(kù)中的數(shù)據(jù)與主庫(kù)保持同步。

MySQL高級(jí)第十七篇:數(shù)據(jù)庫(kù)主從復(fù)制原理及保證數(shù)據(jù)一致性

  • 總結(jié)起來(lái)就是三步:
    • 步驟1:Master將寫操作記錄到二進(jìn)制日志(binlog),這些記錄叫做二進(jìn)制日志事件(binary log events);
    • 步驟2:Slave 將 Master 的 binary log events拷貝到它的中繼日志(relay log);
    • 步驟3:Slave重做中繼日志中的事件,將改變應(yīng)用到自己的數(shù)據(jù)庫(kù)中。
      MySQL高級(jí)第十七篇:數(shù)據(jù)庫(kù)主從復(fù)制原理及保證數(shù)據(jù)一致性

三、搭建一主一從環(huán)境

前邊的文章已經(jīng)有寫過(guò),這里就不在復(fù)述了,點(diǎn)擊跳轉(zhuǎn): MySQL主從復(fù)制—有手就能學(xué)會(huì)的MySQL集群搭建教程

四、如何解決數(shù)據(jù)一致性問(wèn)題?

  • 進(jìn)行主從同步的內(nèi)容是二進(jìn)制日志,它是一個(gè)文件,在進(jìn)行網(wǎng)絡(luò)傳輸的過(guò)程中就一定會(huì)存在主從延遲,這樣就可能造成用戶在從庫(kù)上讀取的數(shù)據(jù)不是最新的數(shù)據(jù),也就是主從同步中的數(shù)據(jù)不一致性問(wèn)題。

1. 方案一、異步復(fù)制

  • 異步模式就是客戶端提交COMMIT之后不需要等從庫(kù)返回任何結(jié)果,而是直接將結(jié)果返回給客戶端,這樣做的好處是不會(huì)影響主庫(kù)寫的效率。
  • 但這樣可能會(huì)存在主庫(kù)宕機(jī),而Binlog還沒有同步到從庫(kù)的情況,也就是此時(shí)的主庫(kù)和從庫(kù)數(shù)據(jù)不一致。
  • 這時(shí)候從從庫(kù)中選擇一個(gè)作為新主,那么新主則可能缺少原來(lái)主服務(wù)器中已提交的事務(wù)。所以,這種復(fù)制模式下的數(shù)據(jù)一致性是最弱的。

2. 方案二、半同步復(fù)制

  • 半同步復(fù)制的原理是在客戶端提交COMMIT之后不直接將結(jié)果返回給客戶端,而是等待至少有一個(gè)從庫(kù)接收到了Binlog,并且寫入到中繼日志中,再返回給客戶端。
  • 這樣做的好處是提高了數(shù)據(jù)的一致性,當(dāng)然相比于異步復(fù)制來(lái)說(shuō),至少多增加了一個(gè)網(wǎng)絡(luò)連接的延遲,降低了主庫(kù)寫的效率
  • 在MySQL5.7版本中還增加了一個(gè)參數(shù),可以對(duì)應(yīng)答的從庫(kù)數(shù)量進(jìn)行設(shè)置,默認(rèn)為1,也就是說(shuō)只要有1個(gè)從庫(kù)進(jìn)行了響應(yīng),就可以返回給客戶端。如果將這個(gè)參數(shù)調(diào)大,可以提升數(shù)據(jù)一致性的強(qiáng)度,但也會(huì)增加主庫(kù)等待從庫(kù)響應(yīng)的時(shí)間。
    MySQL高級(jí)第十七篇:數(shù)據(jù)庫(kù)主從復(fù)制原理及保證數(shù)據(jù)一致性

3. 方案三、組復(fù)制

  • 異步復(fù)制和半同步復(fù)制都無(wú)法最終保證數(shù)據(jù)的一致性問(wèn)題,半同步復(fù)制是通過(guò)判斷從庫(kù)響應(yīng)的個(gè)數(shù)來(lái)決定是否返回給客戶端,雖然數(shù)據(jù)一致性相比于異步復(fù)制有提升,但仍然無(wú)法滿足對(duì)數(shù)據(jù)一致性要求高的場(chǎng)景。
  • 組復(fù)制技術(shù)MGR很好地彌補(bǔ)了這兩種復(fù)制模式的不足,它是MySQL在5.7.17版本中推出的一種新的數(shù)據(jù)復(fù)制技術(shù),是基于Paxos協(xié)議的狀態(tài)機(jī)復(fù)制
  • 簡(jiǎn)單說(shuō)一下MGR的工作原理:
  • 首先我們將多個(gè)節(jié)點(diǎn)共同組成一個(gè)復(fù)制組,在執(zhí)行讀寫事務(wù)的時(shí)候,需要通過(guò)一致性協(xié)議層的同意,也就是讀寫事務(wù)想要進(jìn)行提交,必須要經(jīng)過(guò)組里“大多數(shù)人”(對(duì)應(yīng)Node節(jié)點(diǎn))的同意,大多數(shù)指的是同意的節(jié)點(diǎn)數(shù)量需要大于(N/2+1),這樣才可以進(jìn)行提交,而不是原發(fā)起方一個(gè)說(shuō)了算。
  • 而針對(duì)只讀事務(wù)則不需要經(jīng)過(guò)組內(nèi)同意,直接COMMIT即可。
  • 在一個(gè)復(fù)制組內(nèi)有多個(gè)節(jié)點(diǎn)組成,它們各自維護(hù)了自己的數(shù)據(jù)副本,并且在一致性協(xié)議層實(shí)現(xiàn)了原子消息和全局有序消息,從而保證組內(nèi)數(shù)據(jù)的一致性。

事實(shí)上,Paxos算法遠(yuǎn)遠(yuǎn)不止這么簡(jiǎn)單,它經(jīng)常被作為分布式一致算法廣泛使用,比如zookeeper就是基于它實(shí)現(xiàn)的,后邊寫到zookeeper時(shí)還會(huì)詳細(xì)分析…文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-424565.html

到了這里,關(guān)于MySQL高級(jí)第十七篇:數(shù)據(jù)庫(kù)主從復(fù)制原理及保證數(shù)據(jù)一致性的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MySQL數(shù)據(jù)庫(kù)——主從復(fù)制

    MySQL數(shù)據(jù)庫(kù)——主從復(fù)制

    在實(shí)際的生產(chǎn)環(huán)境中,對(duì)數(shù)據(jù)庫(kù)的讀和寫都在同一個(gè)數(shù)據(jù)庫(kù)服務(wù)器中,是不能滿足實(shí)際需求的。無(wú)論是在安全性、高可用性還是高并發(fā)等各個(gè)方面都是完全不能滿足實(shí)際需求的。因此,通過(guò)主從復(fù)制的方式來(lái)同步數(shù)據(jù),再通過(guò)讀寫分離來(lái)提升數(shù)據(jù)庫(kù)的并發(fā)負(fù)載能力。有點(diǎn)類似

    2024年02月11日
    瀏覽(27)
  • 【Linux篇】第十七篇——信號(hào)量

    【Linux篇】第十七篇——信號(hào)量

    前言 POSIX信號(hào)量 信號(hào)量的概念 信號(hào)量的工作原理 信號(hào)量函數(shù) 二元信號(hào)量模擬實(shí)現(xiàn)互斥功能 基于環(huán)形隊(duì)列的生產(chǎn)消費(fèi)模型 空間資源和數(shù)據(jù)資源 生產(chǎn)者和消費(fèi)者申請(qǐng)和釋放資源 必須遵守的兩個(gè)規(guī)則 代碼實(shí)現(xiàn) 信號(hào)量保護(hù)環(huán)形隊(duì)列的原理 將可能被多個(gè)執(zhí)行流同時(shí)訪問(wèn)的資源叫

    2024年02月06日
    瀏覽(19)
  • mysql 數(shù)據(jù)庫(kù)主從復(fù)制搭建

    MySQL 主從復(fù)制主要用于實(shí)現(xiàn)高可用性和備份。在主從復(fù)制中,一個(gè) MySQL 實(shí)例(稱為主節(jié)點(diǎn))將其數(shù)據(jù)更改復(fù)制到至少一個(gè)其他 MySQL 實(shí)例(稱為從節(jié)點(diǎn))上。主要借助于數(shù)據(jù)庫(kù)二進(jìn)制日志binlog進(jìn)行數(shù)據(jù)的復(fù)制。 主從數(shù)據(jù)庫(kù)對(duì)應(yīng)的操作系統(tǒng)、數(shù)據(jù)庫(kù)版本要一致。 1、主庫(kù)配置 設(shè)

    2024年02月20日
    瀏覽(26)
  • MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)主從同步

    MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)主從同步

    安裝MySQL數(shù)據(jù)庫(kù)8.0.32 今天來(lái)學(xué)習(xí)數(shù)據(jù)庫(kù)主從同步的原理及過(guò)程,數(shù)據(jù)庫(kù)主要是用來(lái)存儲(chǔ)WEB數(shù)據(jù),在企業(yè)當(dāng)中是極為重要的,下面一起來(lái)看下。 MySQL主從復(fù)制在中小企業(yè),大型企業(yè)中廣泛使用,MySQL主從復(fù)制的目的是實(shí)現(xiàn)數(shù)據(jù)庫(kù)冗余備份,將master數(shù)據(jù)庫(kù)數(shù)據(jù)定時(shí)同步到slave數(shù)據(jù)庫(kù)

    2024年02月02日
    瀏覽(85)
  • Mysql主從數(shù)據(jù)庫(kù)搭建(一主兩從)

    Mysql主從數(shù)據(jù)庫(kù)搭建(一主兩從)

    目錄 1、服務(wù)器規(guī)劃 2、主從同步流程 3、主從搭建 3.1、master節(jié)點(diǎn)上配置文件修改 3.2、master節(jié)點(diǎn)創(chuàng)建同步用戶和權(quán)限 3.3、slave1和slave2節(jié)點(diǎn)配置文件修改 3.4、slave1和slave2節(jié)點(diǎn)執(zhí)行同步任務(wù) 3.5、解決虛擬機(jī)克隆導(dǎo)致mysql所有服務(wù)器uuid都一樣的問(wèn)題 4、bin-log相關(guān)說(shuō)明 5、主從同步注

    2024年02月11日
    瀏覽(18)
  • 【數(shù)據(jù)庫(kù)】mysql主從復(fù)制與讀寫分離

    【數(shù)據(jù)庫(kù)】mysql主從復(fù)制與讀寫分離

    ??讀寫分離,基本的原理是讓主數(shù)據(jù)庫(kù)處理事務(wù)性增、改、刪操作(INSERT、UPDATE、DELETE ),而從數(shù)據(jù)庫(kù)處理SELECT查詢操作。數(shù)據(jù)庫(kù)復(fù)制被用來(lái)把事務(wù)性操作導(dǎo)致的變更同步到集群中的從數(shù)據(jù)庫(kù)。 ??因?yàn)閿?shù)據(jù)庫(kù)的\\\"寫”(寫10000條數(shù)據(jù)可能要3分鐘)操作是比較耗時(shí)的。 ??

    2024年02月11日
    瀏覽(27)
  • 【MySQL數(shù)據(jù)庫(kù)】主從復(fù)制與讀寫分離

    【MySQL數(shù)據(jù)庫(kù)】主從復(fù)制與讀寫分離

    讀寫分離,基本的原理是讓主數(shù)據(jù)庫(kù)處理事務(wù)性增、改、刪操作(INSERT、UPDATE、DELETE),而從數(shù)據(jù)庫(kù)處理SELECT查詢操作。數(shù)據(jù)庫(kù)復(fù)制被用來(lái)把事務(wù)性操作導(dǎo)致的變更同步到集群中的從數(shù)據(jù)庫(kù)。 因?yàn)閿?shù)據(jù)庫(kù)的“寫”(寫10000條數(shù)據(jù)可能要3分鐘)操作是比較耗時(shí)的。 但是數(shù)據(jù)庫(kù)

    2024年02月11日
    瀏覽(24)
  • MySQL數(shù)據(jù)庫(kù) 主從復(fù)制與讀寫分離

    讀寫分離,基本的原理是讓主數(shù)據(jù)庫(kù)處理事務(wù)性增、改、刪操作(INSERT、UPDATE、DELETE),而從數(shù)據(jù)庫(kù)處理SELECT查詢操作。數(shù)據(jù)庫(kù)復(fù)制被用來(lái)把事務(wù)性操作導(dǎo)致的變更同步到集群中的從數(shù)據(jù)庫(kù)。 因?yàn)閿?shù)據(jù)庫(kù)的“寫”(寫10000條數(shù)據(jù)可能要3分鐘)操作是比較耗時(shí)的。 但是數(shù)據(jù)庫(kù)

    2024年02月10日
    瀏覽(30)
  • 【數(shù)據(jù)庫(kù)七】MySQL主從復(fù)制與讀寫分離

    【數(shù)據(jù)庫(kù)七】MySQL主從復(fù)制與讀寫分離

    讀寫分離,基本的原理是讓主數(shù)據(jù)庫(kù)處理事務(wù)性增、改、刪操作 (insert、update、delete),而 從數(shù)據(jù)庫(kù)處理select查詢操作 。 數(shù)據(jù)庫(kù)復(fù)制被用來(lái)把事務(wù)性操作導(dǎo)致的變更同步到集群中的從數(shù)據(jù)庫(kù) 。 因?yàn)閿?shù)據(jù)庫(kù)的“寫”(寫10000條數(shù)據(jù)可能要3分鐘)操作是比較耗時(shí)的。 但是數(shù)據(jù)

    2024年02月11日
    瀏覽(21)
  • Mysql數(shù)據(jù)庫(kù)--實(shí)現(xiàn)主從復(fù)制搭建與同步

    Mysql數(shù)據(jù)庫(kù)--實(shí)現(xiàn)主從復(fù)制搭建與同步

    一般數(shù)據(jù)庫(kù)都是讀取壓力大于寫數(shù)據(jù)壓力,主從復(fù)制即為了實(shí)現(xiàn)數(shù)據(jù)庫(kù)的負(fù)載均衡和讀寫分離。通過(guò)將Mysql的某一臺(tái)主機(jī)的數(shù)據(jù)復(fù)制到其它主機(jī)(slaves)上,主服務(wù)器只負(fù)責(zé)寫,而從服務(wù)器只負(fù)責(zé)讀。 如生產(chǎn)環(huán)境中,使用redis數(shù)據(jù)庫(kù)作為緩存數(shù)據(jù)庫(kù),用戶訪問(wèn)業(yè)務(wù)數(shù)據(jù)時(shí),先

    2024年02月08日
    瀏覽(95)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包