chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

MySQL數(shù)據(jù)庫(kù)主從同步延遲產(chǎn)生的原因

馬哥Linux運(yùn)維 ? 來(lái)源:稀土掘金 ? 2023-11-28 10:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、MySQL數(shù)據(jù)庫(kù)主從同步延遲產(chǎn)生的原因

MySQL的主從復(fù)制都是單線程的操作,主庫(kù)對(duì)所有DDL和DML產(chǎn)生的日志寫(xiě)進(jìn)binlog,由于binlog是順序?qū)?,所以效率很高?br /> Slave的SQL Thread線程將主庫(kù)的DDL和DML操作事件在slave中重放。DML和DDL的IO操作是隨即的,不是順序的,成本高很多。另一方面,由于SQL Thread也是單線程的,當(dāng)主庫(kù)的并發(fā)較高時(shí),產(chǎn)生的DML數(shù)量超過(guò)slave的SQL Thread所能處理的速度,或者當(dāng)slave中有大型query語(yǔ)句產(chǎn)生了鎖等待那么延時(shí)就產(chǎn)生了。
常見(jiàn)原因:Master負(fù)載過(guò)高、Slave負(fù)載過(guò)高、網(wǎng)絡(luò)延遲、機(jī)器性能太低、MySQL配置不合理。

二、關(guān)于DDL和DML

SQL語(yǔ)言共分為以下幾大類:查詢語(yǔ)言DQL,控制語(yǔ)言DCL,操縱語(yǔ)言DML,定義語(yǔ)言DDL。事務(wù)控制TCL

DQL(Data QUERY Languages)語(yǔ)句:即數(shù)據(jù)庫(kù)定義語(yǔ)句,用來(lái)查詢SELECT子句,F(xiàn)ROM子句,WHERE子句組成的查詢塊,比如:select–from–where–grouop by–having–order by–limit

DDL(Data Definition Languages)語(yǔ)句:即數(shù)據(jù)庫(kù)定義語(yǔ)句,用來(lái)創(chuàng)建數(shù)據(jù)庫(kù)中的表、索引、視圖、存儲(chǔ)過(guò)程、觸發(fā)器等,常用的語(yǔ)句關(guān)鍵字有:CREATE,ALTER,DROP,TRUNCATE,COMMENT,RENAME。增刪改表的結(jié)構(gòu)

DML(Data Manipulation Language)語(yǔ)句:即數(shù)據(jù)操縱語(yǔ)句,用來(lái)查詢、添加、更新、刪除等,常用的語(yǔ)句關(guān)鍵字有:SELECT,INSERT,UPDATE,DELETE,MERGE,CALL,EXPLAIN PLAN,LOCK TABLE,包括通用性的增刪改查。增刪改表的數(shù)據(jù)

DCL(Data Control Language)語(yǔ)句:即數(shù)據(jù)控制語(yǔ)句,用于授權(quán)/撤銷數(shù)據(jù)庫(kù)及其字段的權(quán)限(DCL is short name of Data Control Language which includes commands such as GRANT and mostly concerned with rights, permissions and other controls of the database system.)。常用的語(yǔ)句關(guān)鍵字有:GRANT,REVOKE。

TCL(Transaction Control Language)語(yǔ)句:事務(wù)控制語(yǔ)句,用于控制事務(wù),常用的語(yǔ)句關(guān)鍵字有:COMMIT,ROLLBACK,SAVEPOINT,SET TRANSACTION。

三、主從延時(shí)排查方法

通過(guò)監(jiān)控 show slave status 命令輸出的Seconds_Behind_Master參數(shù)的值來(lái)判斷:

NULL,表示io_thread或是sql_thread有任何一個(gè)發(fā)生故障;

0,該值為零,表示主從復(fù)制良好;

正值,表示主從已經(jīng)出現(xiàn)延時(shí),數(shù)字越大表示從庫(kù)延遲越嚴(yán)重

8f075dac-8d14-11ee-939d-92fbcf53809c.jpg

四、解決方案

解決數(shù)據(jù)丟失的問(wèn)題:

半同步復(fù)制

從MySQL5.5開(kāi)始,MySQL已經(jīng)支持半同步復(fù)制了,半同步復(fù)制介于異步復(fù)制和同步復(fù)制之間,主庫(kù)在執(zhí)行完事務(wù)后不立刻返回結(jié)果給客戶端,需要等待至少一個(gè)從庫(kù)接收到并寫(xiě)到relay log中才返回結(jié)果給客戶端。相對(duì)于異步復(fù)制,半同步復(fù)制提高了數(shù)據(jù)的安全性,同時(shí)它也造成了一個(gè)TCP/IP往返耗時(shí)的延遲。

主庫(kù)配置sync_binlog=1,innodb_flush_log_at_trx_commit=1 sync_binlog的默認(rèn)值是0,MySQL不會(huì)將binlog同步到磁盤(pán),其值表示每寫(xiě)多少binlog同步一次磁盤(pán)。

innodb_flush_log_at_trx_commit為1表示每一次事務(wù)提交或事務(wù)外的指令都需要把日志flush到磁盤(pán)。

注意:將以上兩個(gè)值同時(shí)設(shè)置為1時(shí),寫(xiě)入性能會(huì)受到一定限制,只有對(duì)數(shù)據(jù)安全性要求很高的場(chǎng)景才建議使用,比如涉及到錢(qián)的訂單支付業(yè)務(wù),而且系統(tǒng)I/O能力必須可以支撐!

4.1 解決從庫(kù)復(fù)制延遲的問(wèn)題:

架構(gòu)方面

業(yè)務(wù)的持久化層的實(shí)現(xiàn)采用分庫(kù)架構(gòu),mysql服務(wù)可平行擴(kuò)展,分散壓力。

單個(gè)庫(kù)讀寫(xiě)分離,一主多從,主寫(xiě)從讀,分散壓力。這樣從庫(kù)壓力比主庫(kù)高,保護(hù)主庫(kù)。

服務(wù)的基礎(chǔ)架構(gòu)在業(yè)務(wù)和mysql之間加入memcache或者redis的cache層。降低mysql的讀壓力。

不同業(yè)務(wù)的mysql物理上放在不同機(jī)器,分散壓力。

使用比主庫(kù)更好的硬件設(shè)備作為slave,mysql壓力小,延遲自然會(huì)變小。

硬件方面

采用好服務(wù)器,比如4u比2u性能明顯好,2u比1u性能明顯好。

存儲(chǔ)用ssd或者盤(pán)陣或者san,提升隨機(jī)寫(xiě)的性能。

主從間保證處在同一個(gè)交換機(jī)下面,并且是萬(wàn)兆環(huán)境。

總結(jié),硬件強(qiáng)勁,延遲自然會(huì)變小。一句話,縮小延遲的解決方案就是花錢(qián)和花時(shí)間。

mysql主從同步加速

sync_binlog在slave端設(shè)置為0

–logs-slave-updates 從服務(wù)器從主服務(wù)器接收到的更新不記入它的二進(jìn)制日志。

直接禁用slave端的binlog

.slave端,如果使用的存儲(chǔ)引擎是innodb,innodb_flush_log_at_trx_commit =2

從文件系統(tǒng)本身屬性角度優(yōu)化

master端修改linux、Unix文件系統(tǒng)中文件的etime屬性, 由于每當(dāng)讀文件時(shí)OS都會(huì)將讀取操作發(fā)生的時(shí)間回寫(xiě)到磁盤(pán)上,對(duì)于讀操作頻繁的數(shù)據(jù)庫(kù)文件來(lái)說(shuō)這是沒(méi)必要的,只會(huì)增加磁盤(pán)系統(tǒng)的負(fù)擔(dān)影響I/O性能??梢酝ㄟ^(guò)設(shè)置文件系統(tǒng)的mount屬性,組織操作系統(tǒng)寫(xiě)atime信息,在linux上的操作為:打開(kāi)/etc/fstab,加上noatime參數(shù)/dev/sdb1 /data reiserfs noatime 1 2然后重新mount文件系統(tǒng)#mount -oremount /data

同步參數(shù)調(diào)整主庫(kù)是寫(xiě),對(duì)數(shù)據(jù)安全性較高,比如sync_binlog=1,

innodb_flush_log_at_trx_commit = 1 之類的設(shè)置是需要的而slave則不需要這么高的數(shù)據(jù)安全,完全可以講sync_binlog設(shè)置為0或者關(guān)閉binlog,innodb_flushlog也可以設(shè)置為0來(lái)提高sql的執(zhí)行效率

4.2 MySql數(shù)據(jù)庫(kù)從庫(kù)同步其他問(wèn)題及解決方案

mysql主從復(fù)制存在的問(wèn)題:

主庫(kù)宕機(jī)后,數(shù)據(jù)可能丟失

從庫(kù)只有一個(gè)sql Thread,主庫(kù)寫(xiě)壓力大,復(fù)制很可能延時(shí)

解決方法:

半同步復(fù)制—解決數(shù)據(jù)丟失的問(wèn)題

并行復(fù)制----解決從庫(kù)復(fù)制延遲的問(wèn)題

半同步復(fù)制mysql semi-sync(半同步復(fù)制)半同步復(fù)制:

5.5集成到mysql,以插件的形式存在,需要單獨(dú)安裝

確保事務(wù)提交后binlog至少傳輸?shù)揭粋€(gè)從庫(kù)

不保證從庫(kù)應(yīng)用完這個(gè)事務(wù)的binlog

性能有一定的降低,響應(yīng)時(shí)間會(huì)更長(zhǎng)

網(wǎng)絡(luò)異?;驈膸?kù)宕機(jī),卡主主庫(kù),直到超時(shí)或從庫(kù)恢復(fù)

主從復(fù)制–異步復(fù)制原理、半同步復(fù)制和并行復(fù)制原理比較

8f231f88-8d14-11ee-939d-92fbcf53809c.jpg

8f32d25c-8d14-11ee-939d-92fbcf53809c.jpg

審核編輯:黃飛

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

    關(guān)注

    13

    文章

    10000

    瀏覽量

    90129
  • SSD
    SSD
    +關(guān)注

    關(guān)注

    21

    文章

    3025

    瀏覽量

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

    關(guān)注

    7

    文章

    3979

    瀏覽量

    67429
  • Linu
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    20102
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    891

    瀏覽量

    28886

原文標(biāo)題:MySQL主從同步延遲原因與解決方案

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    labview有調(diào)用mysql數(shù)據(jù)庫(kù)問(wèn)題????

    labview有調(diào)用mysql數(shù)據(jù)庫(kù),請(qǐng)問(wèn)labview打包成exe安裝檔,怎么把mysql數(shù)據(jù)庫(kù)打包進(jìn)來(lái),是mysql
    發(fā)表于 05-19 16:17

    mysql數(shù)據(jù)庫(kù)同步原理

    數(shù)據(jù)庫(kù)的訪問(wèn)壓力,提升整個(gè)系統(tǒng)的性能和可用性,降低了大訪問(wèn)量引發(fā)數(shù)據(jù)庫(kù)宕機(jī)的故障率。 binlog簡(jiǎn)介 MySQL主從同步是基于binlo
    發(fā)表于 09-28 11:49 ?0次下載
    <b class='flag-5'>mysql</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>同步</b>原理

    Mysql主從同步的實(shí)現(xiàn)原理

    MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB 公司開(kāi)發(fā),目前屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫(kù)
    發(fā)表于 12-26 15:56 ?3229次閱讀
    <b class='flag-5'>Mysql</b><b class='flag-5'>主從</b><b class='flag-5'>同步</b>的實(shí)現(xiàn)原理

    簡(jiǎn)單介紹MySQL延遲主從復(fù)制

    MySQL 5.6 已經(jīng)支持延遲復(fù)制, 可設(shè)置備節(jié)點(diǎn)的延遲時(shí)間, 延遲復(fù)制是有意義的,例如防止主節(jié)點(diǎn)數(shù)據(jù)誤刪,查看
    的頭像 發(fā)表于 02-09 09:05 ?4280次閱讀

    MySQL數(shù)據(jù)庫(kù)如何安裝和使用說(shuō)明

    MySQL數(shù)據(jù)庫(kù)開(kāi)發(fā) 基礎(chǔ)概念 1.數(shù)據(jù):描述事物特征的符號(hào),屬性 2.數(shù)據(jù)庫(kù)的概念:管理計(jì)算機(jī)中的數(shù)據(jù)的倉(cāng)庫(kù) 2.
    的頭像 發(fā)表于 02-13 16:13 ?3178次閱讀

    華為云數(shù)據(jù)庫(kù)-RDS for MySQL數(shù)據(jù)庫(kù)

    華為云數(shù)據(jù)庫(kù)-RDS for MySQL數(shù)據(jù)庫(kù) 華為云數(shù)據(jù)庫(kù)作為華為云的一款數(shù)據(jù)庫(kù)產(chǎn)品,它主要是以MyS
    的頭像 發(fā)表于 10-27 11:06 ?2032次閱讀

    MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用

    MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用 MySQL是一種廣泛使用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),被認(rèn)為是最流行和最常見(jiàn)的開(kāi)源數(shù)據(jù)庫(kù)之一。它可以被用于多種不同的應(yīng)
    的頭像 發(fā)表于 08-28 17:15 ?1519次閱讀

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

    MySQL主從復(fù)制是一種常見(jiàn)的數(shù)據(jù)同步方式,它可以實(shí)現(xiàn)將一個(gè)數(shù)據(jù)庫(kù)的更改同步到其他多個(gè)
    的頭像 發(fā)表于 11-16 14:04 ?2150次閱讀

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

    MySQL主從復(fù)制是一種數(shù)據(jù)庫(kù)復(fù)制技術(shù),它允許將一個(gè)MySQL數(shù)據(jù)庫(kù)的更新操作自動(dòng)復(fù)制到其他MySQL
    的頭像 發(fā)表于 11-16 14:18 ?885次閱讀

    mysql是一個(gè)什么類型的數(shù)據(jù)庫(kù)

    MySQL是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),用于存儲(chǔ)和管理大量結(jié)構(gòu)化數(shù)據(jù)。它被廣泛用于各種應(yīng)用程序和網(wǎng)站的后端,包括電子商務(wù)平臺(tái)、社交媒體網(wǎng)站、金融系統(tǒng)等等。MySQL的特點(diǎn)是
    的頭像 發(fā)表于 11-16 14:43 ?2647次閱讀

    MySQL數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)

    MySQL 是一種開(kāi)源的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它是目前最流行的數(shù)據(jù)庫(kù)之一。MySQL 提供了一種結(jié)構(gòu)化的方法來(lái)管理大量的數(shù)據(jù),并且具有高效、
    的頭像 發(fā)表于 11-21 11:09 ?1531次閱讀

    mysql數(shù)據(jù)庫(kù)基礎(chǔ)命令

    MySQL是一個(gè)流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),經(jīng)常用于存儲(chǔ)、管理和操作數(shù)據(jù)。在本文中,我們將詳細(xì)介紹MySQL的基礎(chǔ)命令,并提供與每個(gè)命令相關(guān)的詳細(xì)解釋。 登錄
    的頭像 發(fā)表于 12-06 10:56 ?1107次閱讀

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—Mysql數(shù)據(jù)庫(kù)表記錄丟失的數(shù)據(jù)恢復(fù)流程

    Mysql數(shù)據(jù)庫(kù)故障: Mysql數(shù)據(jù)庫(kù)表記錄丟失。 Mysql數(shù)據(jù)庫(kù)故障表現(xiàn): 1、
    的頭像 發(fā)表于 12-16 11:05 ?877次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—<b class='flag-5'>Mysql</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>表記錄丟失的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)流程

    構(gòu)建數(shù)據(jù)庫(kù)解決方案,基于華為云 Flexus X 實(shí)例容器化 MySQL 主從同步架構(gòu)

    前言**** 華為云 Flexus X 實(shí)例,融合柔性算力與智能調(diào)度,為數(shù)據(jù)庫(kù)解決方案帶來(lái)全新突破。采用容器化 MySQL 主從同步架構(gòu),實(shí)現(xiàn)數(shù)據(jù)
    的頭像 發(fā)表于 01-07 17:22 ?821次閱讀
    構(gòu)建<b class='flag-5'>數(shù)據(jù)庫(kù)</b>解決方案,基于華為云 Flexus X 實(shí)例容器化 <b class='flag-5'>MySQL</b> <b class='flag-5'>主從</b><b class='flag-5'>同步</b>架構(gòu)

    MySQL數(shù)據(jù)庫(kù)的安裝

    MySQL數(shù)據(jù)庫(kù)的安裝 【一】各種數(shù)據(jù)庫(kù)的端口 MySQL :3306 Redis :6379 MongoDB :27017 Django :8000 flask :5000 【二】
    的頭像 發(fā)表于 01-14 11:25 ?750次閱讀
    <b class='flag-5'>MySQL</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>的安裝