亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

高并發(fā)這個階段,肯定是需要做讀寫分離的,啥意思?因?yàn)閷?shí)際上大部分的互聯(lián)網(wǎng)公司,一些網(wǎng)站,或者是 App,其實(shí)都是讀多寫少。所以針對這個情況,就是寫一個主庫,但是主庫掛多個從庫,然后從多個從庫來讀,那不就可以支撐更高的讀并發(fā)壓力了嗎?

如何實(shí)現(xiàn) MySQL 的讀寫分離?

其實(shí)很簡單,就是基于主從復(fù)制架構(gòu),簡單來說,就搞一個主庫,掛多個從庫,然后我們就單單只是寫主庫,然后主庫會自動把數(shù)據(jù)給同步到從庫上去。

MySQL 主從復(fù)制原理的是啥?

主庫將變更寫入 binlog 日志,然后從庫連接到主庫之后,從庫有一個 IO 線程,將主庫的 binlog 日志拷貝到自己本地,寫入一個 relay 中繼日志中。接著從庫中有一個 SQL 線程會從中繼日志讀取 binlog,然后執(zhí)行 binlog 日志中的內(nèi)容,也就是在自己本地再次執(zhí)行一遍 SQL,這樣就可以保證自己跟主庫的數(shù)據(jù)是一樣的。

 

MySQL讀寫分離?MySQL主從復(fù)制原理?如何解決主從同步延時?

 

 

這里有一個非常重要的一點(diǎn),就是從庫同步主庫數(shù)據(jù)的過程是串行化的,也就是說主庫上并行的操作,在從庫上會串行執(zhí)行。所以這就是一個非常重要的點(diǎn)了,由于從庫從主庫拷貝日志以及串行執(zhí)行 SQL 的特點(diǎn),在高并發(fā)場景下,從庫的數(shù)據(jù)一定會比主庫慢一些,是有延時的。所以經(jīng)常出現(xiàn),剛寫入主庫的數(shù)據(jù)可能是讀不到的,要過幾十毫秒,甚至幾百毫秒才能讀取到。

而且這里還有另外一個問題,就是如果主庫突然宕機(jī),然后恰好數(shù)據(jù)還沒同步到從庫,那么有些數(shù)據(jù)可能在從庫上是沒有的,有些數(shù)據(jù)可能就丟失了。

所以 MySQL 實(shí)際上在這一塊有兩個機(jī)制,一個是半同步復(fù)制,用來解決主庫數(shù)據(jù)丟失問題;一個是并行復(fù)制,用來解決主從同步延時問題。

這個所謂半同步復(fù)制,也叫 semi-sync 復(fù)制,指的就是主庫寫入 binlog 日志之后,就會將強(qiáng)制此時立即將數(shù)據(jù)同步到從庫,從庫將日志寫入自己本地的 relay log 之后,接著會返回一個 ack 給主庫,主庫接收到至少一個從庫的 ack 之后才會認(rèn)為寫操作完成了。

所謂并行復(fù)制,指的是從庫開啟多個線程,并行讀取 relay log 中不同庫的日志,然后并行重放不同庫的日志,這是庫級別的并行。

MySQL 主從同步延時問題(精華)

以前線上確實(shí)處理過因?yàn)橹鲝耐窖訒r問題而導(dǎo)致的線上的 bug,屬于小型的生產(chǎn)事故。

是這個么場景。有個同學(xué)是這樣寫代碼邏輯的。先插入一條數(shù)據(jù),再把它查出來,然后更新這條數(shù)據(jù)。在生產(chǎn)環(huán)境高峰期,寫并發(fā)達(dá)到了 2000/s,這個時候,主從復(fù)制延時大概是在小幾十毫秒。線上會發(fā)現(xiàn),每天總有那么一些數(shù)據(jù),我們期望更新一些重要的數(shù)據(jù)狀態(tài),但在高峰期時候卻沒更新。用戶跟客服反饋,而客服就會反饋給我們。

我們通過 MySQL 命令:

show status

查看 Seconds_Behind_Master,可以看到從庫復(fù)制主庫的數(shù)據(jù)落后了幾 ms。

一般來說,如果主從延遲較為嚴(yán)重,有以下解決方案:

  • 分庫,將一個主庫拆分為多個主庫,每個主庫的寫并發(fā)就減少了幾倍,此時主從延遲可以忽略不計(jì)。
  • 打開 MySQL 支持的并行復(fù)制,多個庫并行復(fù)制。如果說某個庫的寫入并發(fā)就是特別高,單庫寫并發(fā)達(dá)到了 2000/s,并行復(fù)制還是沒意義。
  • 重寫代碼,寫代碼的同學(xué),要慎重,插入數(shù)據(jù)時立馬查詢可能查不到。
  • 如果確實(shí)是存在必須先插入,立馬要求就查詢到,然后立馬就要反過來執(zhí)行一些操作,對這個查詢設(shè)置直連主庫不推薦這種方法,你要是這么搞,讀寫分離的意義就喪失了。

分享到:
標(biāo)簽:MySQL
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定