色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MySQL數據庫主從同步延遲產生的原因

馬哥Linux運維 ? 來源:稀土掘金 ? 2023-11-28 10:33 ? 次閱讀

一、MySQL數據庫主從同步延遲產生的原因

MySQL的主從復制都是單線程的操作,主庫對所有DDL和DML產生的日志寫進binlog,由于binlog是順序寫,所以效率很高。
Slave的SQL Thread線程將主庫的DDL和DML操作事件在slave中重放。DML和DDL的IO操作是隨即的,不是順序的,成本高很多。另一方面,由于SQL Thread也是單線程的,當主庫的并發較高時,產生的DML數量超過slave的SQL Thread所能處理的速度,或者當slave中有大型query語句產生了鎖等待那么延時就產生了。
常見原因:Master負載過高、Slave負載過高、網絡延遲、機器性能太低、MySQL配置不合理。

二、關于DDL和DML

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

DQL(Data QUERY Languages)語句:即數據庫定義語句,用來查詢SELECT子句,FROM子句,WHERE子句組成的查詢塊,比如:select–from–where–grouop by–having–order by–limit

DDL(Data Definition Languages)語句:即數據庫定義語句,用來創建數據庫中的表、索引、視圖、存儲過程、觸發器等,常用的語句關鍵字有:CREATE,ALTER,DROP,TRUNCATE,COMMENT,RENAME。增刪改表的結構

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

DCL(Data Control Language)語句:即數據控制語句,用于授權/撤銷數據庫及其字段的權限(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.)。常用的語句關鍵字有:GRANT,REVOKE。

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

三、主從延時排查方法

通過監控 show slave status 命令輸出的Seconds_Behind_Master參數的值來判斷:

NULL,表示io_thread或是sql_thread有任何一個發生故障;

0,該值為零,表示主從復制良好;

正值,表示主從已經出現延時,數字越大表示從庫延遲越嚴重

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

四、解決方案

解決數據丟失的問題:

半同步復制

從MySQL5.5開始,MySQL已經支持半同步復制了,半同步復制介于異步復制和同步復制之間,主庫在執行完事務后不立刻返回結果給客戶端,需要等待至少一個從庫接收到并寫到relay log中才返回結果給客戶端。相對于異步復制,半同步復制提高了數據的安全性,同時它也造成了一個TCP/IP往返耗時的延遲。

主庫配置sync_binlog=1,innodb_flush_log_at_trx_commit=1 sync_binlog的默認值是0,MySQL不會將binlog同步到磁盤,其值表示每寫多少binlog同步一次磁盤。

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

注意:將以上兩個值同時設置為1時,寫入性能會受到一定限制,只有對數據安全性要求很高的場景才建議使用,比如涉及到錢的訂單支付業務,而且系統I/O能力必須可以支撐!

4.1 解決從庫復制延遲的問題:

架構方面

業務的持久化層的實現采用分庫架構,mysql服務可平行擴展,分散壓力。

單個庫讀寫分離,一主多從,主寫從讀,分散壓力。這樣從庫壓力比主庫高,保護主庫。

服務的基礎架構在業務和mysql之間加入memcache或者redis的cache層。降低mysql的讀壓力。

不同業務的mysql物理上放在不同機器,分散壓力。

使用比主庫更好的硬件設備作為slave,mysql壓力小,延遲自然會變小。

硬件方面

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

存儲用ssd或者盤陣或者san,提升隨機寫的性能。

主從間保證處在同一個交換機下面,并且是萬兆環境。

總結,硬件強勁,延遲自然會變小。一句話,縮小延遲的解決方案就是花錢和花時間。

mysql主從同步加速

sync_binlog在slave端設置為0

–logs-slave-updates 從服務器從主服務器接收到的更新不記入它的二進制日志。

直接禁用slave端的binlog

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

從文件系統本身屬性角度優化

master端修改linux、Unix文件系統中文件的etime屬性, 由于每當讀文件時OS都會將讀取操作發生的時間回寫到磁盤上,對于讀操作頻繁的數據庫文件來說這是沒必要的,只會增加磁盤系統的負擔影響I/O性能。可以通過設置文件系統的mount屬性,組織操作系統寫atime信息,在linux上的操作為:打開/etc/fstab,加上noatime參數/dev/sdb1 /data reiserfs noatime 1 2然后重新mount文件系統#mount -oremount /data

同步參數調整主庫是寫,對數據安全性較高,比如sync_binlog=1,

innodb_flush_log_at_trx_commit = 1 之類的設置是需要的而slave則不需要這么高的數據安全,完全可以講sync_binlog設置為0或者關閉binlog,innodb_flushlog也可以設置為0來提高sql的執行效率

4.2 MySql數據庫從庫同步其他問題及解決方案

mysql主從復制存在的問題:

主庫宕機后,數據可能丟失

從庫只有一個sql Thread,主庫寫壓力大,復制很可能延時

解決方法:

半同步復制—解決數據丟失的問題

并行復制----解決從庫復制延遲的問題

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

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

確保事務提交后binlog至少傳輸到一個從庫

不保證從庫應用完這個事務的binlog

性能有一定的降低,響應時間會更長

網絡異常或從庫宕機,卡主主庫,直到超時或從庫恢復

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

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

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

審核編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9219

    瀏覽量

    85597
  • SSD
    SSD
    +關注

    關注

    21

    文章

    2863

    瀏覽量

    117500
  • 數據庫
    +關注

    關注

    7

    文章

    3818

    瀏覽量

    64498
  • Linu
    +關注

    關注

    0

    文章

    26

    瀏覽量

    19842
  • MySQL
    +關注

    關注

    1

    文章

    816

    瀏覽量

    26617

原文標題:MySQL主從同步延遲原因與解決方案

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    labview有調用mysql數據庫問題????

    labview有調用mysql數據庫,請問labview打包成exe安裝檔,怎么把mysql數據庫打包進來,是mysql
    發表于 05-19 16:17

    MySQL數據庫使用

    關于MySQL數據庫的簡單操作
    發表于 10-24 14:32

    mysql數據庫同步原理

    數據庫的訪問壓力,提升整個系統的性能和可用性,降低了大訪問量引發數據庫宕機的故障率。 binlog簡介 MySQL主從同步是基于binlo
    發表于 09-28 11:49 ?0次下載
    <b class='flag-5'>mysql</b><b class='flag-5'>數據庫</b><b class='flag-5'>同步</b>原理

    Mysql主從同步的實現原理

    MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬于 Oracle 旗下產品。MySQL 是最流行的關系型數據庫
    發表于 12-26 15:56 ?2980次閱讀
    <b class='flag-5'>Mysql</b><b class='flag-5'>主從</b><b class='flag-5'>同步</b>的實現原理

    簡單介紹MySQL延遲主從復制

    MySQL 5.6 已經支持延遲復制, 可設置備節點的延遲時間, 延遲復制是有意義的,例如防止主節點數據誤刪,查看
    的頭像 發表于 02-09 09:05 ?4052次閱讀

    MySQL數據庫如何安裝和使用說明

    MySQL數據庫開發 基礎概念 1.數據:描述事物特征的符號,屬性 2.數據庫的概念:管理計算機中的數據的倉庫 2.
    的頭像 發表于 02-13 16:13 ?2807次閱讀

    華為云數據庫-RDS for MySQL數據庫

    華為云數據庫-RDS for MySQL數據庫 華為云數據庫作為華為云的一款數據庫產品,它主要是以MyS
    的頭像 發表于 10-27 11:06 ?1536次閱讀

    MySQL數據庫管理與應用

    MySQL數據庫管理與應用 MySQL是一種廣泛使用的關系型數據庫管理系統,被認為是最流行和最常見的開源數據庫之一。它可以被用于多種不同的應
    的頭像 發表于 08-28 17:15 ?981次閱讀

    mysql主從復制三種模式

    MySQL主從復制是一種常見的數據同步方式,它可以實現將一個數據庫的更改同步到其他多個
    的頭像 發表于 11-16 14:04 ?1560次閱讀

    mysql主從復制的原理

    MySQL主從復制是一種數據庫復制技術,它允許將一個MySQL數據庫的更新操作自動復制到其他MySQL
    的頭像 發表于 11-16 14:18 ?500次閱讀

    mysql是一個什么類型的數據庫

    MySQL是一種關系型數據庫管理系統(RDBMS),用于存儲和管理大量結構化數據。它被廣泛用于各種應用程序和網站的后端,包括電子商務平臺、社交媒體網站、金融系統等等。MySQL的特點是
    的頭像 發表于 11-16 14:43 ?1810次閱讀

    MySQL數據庫基礎知識

    MySQL 是一種開源的關系型數據庫管理系統,它是目前最流行的數據庫之一。MySQL 提供了一種結構化的方法來管理大量的數據,并且具有高效、
    的頭像 發表于 11-21 11:09 ?980次閱讀

    mysql數據庫基礎命令

    MySQL是一個流行的關系型數據庫管理系統,經常用于存儲、管理和操作數據。在本文中,我們將詳細介紹MySQL的基礎命令,并提供與每個命令相關的詳細解釋。 登錄
    的頭像 發表于 12-06 10:56 ?606次閱讀

    數據庫數據恢復—未開啟binlog的Mysql數據庫數據恢復案例

    mysql數據庫數據恢復環境: 本地服務器,windows server操作系統 ,部署有mysql單實例,數據庫引擎類型為innodb,
    的頭像 發表于 12-08 14:18 ?1155次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—未開啟binlog的<b class='flag-5'>Mysql</b><b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復案例

    數據庫數據恢復—Mysql數據庫表記錄丟失的數據恢復流程

    Mysql數據庫故障: Mysql數據庫表記錄丟失。 Mysql數據庫故障表現: 1、
    的頭像 發表于 12-16 11:05 ?177次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b>恢復—<b class='flag-5'>Mysql</b><b class='flag-5'>數據庫</b>表記錄丟失的<b class='flag-5'>數據</b>恢復流程
    主站蜘蛛池模板: 国精品产露脸偷拍视频| 免费观看高清黄页网址大全| 久久才是精品亚洲国产| 国产传媒麻豆剧精品AV| 欧洲人交xxx69| 暖暖视频大全免费观看| 丰满艳妇亲伦| 阿娇和冠希13分钟在线观看| 99热久久爱五月天婷婷| 99热视频这里只有久久精品| a视频免费在线观看| WWW国产精品人妻一二三区| WWW国产色情在线观看APP| 大乳牛奶女在线观看| 国产成人免费a在线视频app| 国产精品成人不卡在线观看| 国产精品无码无卡毛片不卡视 | 野花香在线观看免费高清播放视频| 亚洲精品喷白浆在线观看| 亚洲网站视频在线观看| 欲香欲色天天天综合和网| 337p啪啪人体大胆| 动漫美女被到爽了流| 狠狠色色综合网站| 牛牛在线视频| 亚洲 欧美 日韩 卡通 另类| 中文无码熟妇人妻AV在线| 亚洲国产中文在线视频| 午夜理论在线观看不卡大地影院| 野花社区视频WWW高清| 99精品99| 国产乱人伦AV麻豆网| 老湿机一区午夜精品免费福利 | 国产精品观看视频免费完整版 | 出差无套内射小秘书| 国产一级特黄a大片99| 国产精品久久婷婷五月色| 久久re热线视频精品99| 日韩成人黄色| 深爱激情站| 影音先锋亚洲AV少妇熟女|