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

主從同步的延遲問題、原因及解決方案

這篇具有很好參考價值的文章主要介紹了主從同步的延遲問題、原因及解決方案。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

主從同步的延遲問題、原因及解決方案

MySQL的主從同步在實際使用過程中會有從庫延遲的問題,那么為什么會有這種問題呢? 如何避免這種問題呢?

情況一: 從服務(wù)器配置過低導(dǎo)致延遲

這類延遲場景的出現(xiàn)往往是主節(jié)點擁有較大規(guī)格的配置,而只讀節(jié)點卻購買了一個最小規(guī)格的配置

只讀節(jié)點的數(shù)據(jù)為了和主節(jié)點保持同步,采用了MySQL binlog復(fù)制技術(shù),由一個IO線程和一個SQL線程來完成,IO線程負責將主庫的binlog拉取到只讀節(jié)點,SQL線程負責消費這些binlog日志,這兩個線程會消耗掉只讀節(jié)點的IO資源,所以當只讀節(jié)點IOPS配置不夠的時候,則會導(dǎo)致只讀節(jié)點的數(shù)據(jù)出現(xiàn)延遲

解決辦法: 升級從服務(wù)器的配置,讓只讀節(jié)點的配置大于或者等于主節(jié)點的配置即可

情況二: 主庫的QPS過高導(dǎo)致只讀節(jié)點延遲

由于只讀節(jié)點與主庫的同步采用的是單線程同步,而主庫的壓力是并發(fā)多線程寫入,這樣勢必會導(dǎo)致只讀節(jié)點的數(shù)據(jù)延遲

解決辦法: 開啟只讀節(jié)點的并行復(fù)制 (mysql5.6.3以后支持多線程復(fù)制)

--------------------------------------------------------------------------------------------------------

拓展:

在MySQL5.6中,引入了并發(fā)復(fù)制,這個并發(fā)復(fù)制是數(shù)據(jù)庫級別的,這意味著一個SQL線程可以處理一個數(shù)據(jù)庫的連續(xù)事務(wù),而不用等待其它數(shù)據(jù)庫完成。

這個版本的并發(fā)復(fù)制,可以理解成一個數(shù)據(jù)庫一個SQL線程。

其與并發(fā)有關(guān)的參數(shù)如下:

slave_parallel_workers #worker 線程個數(shù)

slave-checkpoint-group #隔多少個事務(wù)做一次

checkpointslave-checkpoint-period #隔多長時間做一次

checkpointslave-pending-jobs-size-max #分發(fā)給worker的、處于等待狀態(tài)的event的大小上限

MySQL5.6基于DATABASE級別的并發(fā)復(fù)制可以解決業(yè)務(wù)表放在不同的database下同步延遲的問題

但是在實際生產(chǎn)中大部分表還是放在同一個庫中的,這種情況即使設(shè)置slave_parallel_workers大于0,也無法進行并發(fā)。在高并發(fā)的情況下,依然會造成主從復(fù)制延遲.

MySQL 5.7版本才真正支持“真正”的并行復(fù)制功能.在MySQL5.7中,引入了新的并發(fā)復(fù)制方法,基于LOGICAL_CLOCK的并發(fā)復(fù)制,可以支持在一個database中,并發(fā)執(zhí)行relaylog中的事務(wù)。

相同的二進制日志組在master上提交并行應(yīng)用到slave節(jié)點上,沒有跨數(shù)據(jù)庫的限制,并且不需要把數(shù)據(jù)分割到多個數(shù)據(jù)庫。

要實現(xiàn)這個功能,需要在master節(jié)點標記binlog中提交的事務(wù)哪些是可以并發(fā)執(zhí)行,雖然的MySQL5.6中已經(jīng)引入binarylog group commit,但是沒有將可并發(fā)的事務(wù)標記出來。

在MySQL5.7中,已經(jīng)解決了主從復(fù)制延遲的問題,具體配置參數(shù)如下:

slave-parallel-type=LOGICAL_CLOCK

slave-parallel-workers=16

master_info_repository=TABLE

relay_log_info_repository=TABLE

relay_log_recovery=ON

----------------------------------------------------------------------------------------------------

情況三: 主庫的DDL語句導(dǎo)致只讀節(jié)點延遲

可能1:只讀節(jié)點與主庫的DDL同步是串行進行的,如果DDL操作在主庫執(zhí)行時間很長,那么同樣在備庫也會消耗同樣的時間.

比如在主庫對一張500W的表添加一個字段耗費了10分鐘,那么在只讀節(jié)點上也同樣會耗費10分鐘,所以只讀節(jié)點會延遲600S

可能2:只讀節(jié)點上有一個執(zhí)行時間非常長的的查詢正在執(zhí)行,那么這個查詢會堵塞來自主庫的DDL,讀節(jié)點表被鎖,直到查詢結(jié)束為止,進而導(dǎo)致了只讀節(jié)點的數(shù)據(jù)延遲。

在只讀節(jié)點上可以通過執(zhí)行show processlist命令查看連接的狀態(tài)處于:

Waiting for table metadata lock

解決辦法: 對于可能1,只能說執(zhí)行操作之前對可能帶來的影響要有考量; 對于情況2,可以kill掉只讀節(jié)點上的大查詢進行,就可以恢復(fù)只讀節(jié)點與主節(jié)點的數(shù)據(jù)同步

情況四: 主庫執(zhí)行大事務(wù)導(dǎo)致延遲

主庫執(zhí)行了一條insert … select非常大的插入操作,該操作產(chǎn)生了近幾百G的binlog文件傳輸?shù)街蛔x節(jié)點,進而導(dǎo)致了只讀節(jié)點出現(xiàn)應(yīng)用binlog延遲。

解決辦法: 將大事務(wù)拆分成為小事務(wù)進行排量提交,這樣只讀節(jié)點就可以迅速的完成事務(wù)的執(zhí)行,不會造成數(shù)據(jù)的延遲。

情況五:無主鍵的表進行DML操作導(dǎo)致延遲

如:mysql> update test set kk='fafa01';

由于表中沒有主鍵,所以導(dǎo)致了每一個事務(wù)條目的更新都是全表掃描,如果表中很很多的數(shù)據(jù),則備庫執(zhí)行該更新的事務(wù)條目的時候,就會出現(xiàn)很多的全表掃描更新;

進一步說明就是,由于表中沒有主鍵,在ROW模式下,每刪一條數(shù)據(jù)都會做全表掃,也就是說一條delete,如果刪了10條,會做10次全表掃,所以slave會一直卡??;

解決辦法: 每張表在設(shè)計的時候都加上一個主鍵

----------------------------------------------------------------------------------------------------------

拓展:

主鍵對于innodb來說,是非常重要的,每張表的設(shè)計的時候,都應(yīng)該把主鍵默認的加上,不管你需不需要他

主鍵的設(shè)計最好選擇自增型的主鍵

自增主鍵的好處:

a.自增型主鍵以利于插入性能的提高;

b.自增型主鍵設(shè)計(int,bigint)可以降低二級索引的空間,提升二級索引的內(nèi)存命中率;

c.自增型的主鍵可以減小page的碎片,提升空間和內(nèi)存的使用

------------------------------------------------------------------------------------------------------

四.總結(jié)

為了避免MySQL主從復(fù)制延遲,我們可以從以下幾方面入手:

1.數(shù)據(jù)庫設(shè)置: 主從同步加速

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

2).–log-slave-updates 從服務(wù)器從主服務(wù)器接收到的更新不記入它的二進制日志.

3).直接禁用slave端的binlog

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

2.架構(gòu)方面:在架構(gòu)上做優(yōu)化,盡量讓主庫的DDL快速執(zhí)行,盡量減輕數(shù)據(jù)庫的壓力

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

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

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

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

3.硬件方面:使用比主庫更好的硬件設(shè)備作為slave

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

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

3).主從間保證處在同一個交換機下面,并且是萬兆環(huán)境.文章來源地址http://www.zghlxwxcb.cn/news/detail-601921.html

到了這里,關(guān)于主從同步的延遲問題、原因及解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【多線程】線程安全問題原因與解決方案

    【多線程】線程安全問題原因與解決方案

    目錄 線程安全的概念 線程不安全示例 線程不安全的原因? ? ? 多個線程修改了同一個變量 ? ? 線程是搶占式執(zhí)行的 ? ? 原子性 ? ? 內(nèi)存可見性 ? ? 有序性 線程不安全解決辦法 ?synchronized -監(jiān)視器鎖monitor lock ? ? synchronized 的特性 ????????互斥 ????????刷新內(nèi)

    2024年02月06日
    瀏覽(28)
  • 從原因到解決方案,深入剖析網(wǎng)絡(luò)錯誤問題

    從原因到解決方案,深入剖析網(wǎng)絡(luò)錯誤問題

    當計算機系統(tǒng)中的客戶端(例如瀏覽器、應(yīng)用程序等)嘗試連接到遠程服務(wù)器時,網(wǎng)絡(luò)連接錯誤是一種常見的問題。這種錯誤可能會對用戶造成很大的困擾,因為它可能導(dǎo)致無法訪問網(wǎng)站或無法使用某些在線應(yīng)用程序。而網(wǎng)絡(luò)錯誤其實是我們?nèi)粘i_發(fā)中很難完全避免掉的一個

    2024年02月07日
    瀏覽(21)
  • 【JavaEE面試題(九)線程安全問題的原因和解決方案】

    【JavaEE面試題(九)線程安全問題的原因和解決方案】

    大家觀察下是否適用多線程的現(xiàn)象是否一致?同時嘗試思考下為什么會有這樣的現(xiàn)象發(fā)生呢? 原因是 1.load 2. add 3. save 注意:可能會導(dǎo)致 小于5w 想給出一個線程安全的確切定義是復(fù)雜的,但我們可以這樣認為: 如果多線程環(huán)境下代碼運行的結(jié)果是符合我們預(yù)期的,即在單線

    2024年02月16日
    瀏覽(21)
  • 鴻蒙ArkTS Web組件加載空白的問題原因及解決方案

    鴻蒙ArkTS Web組件加載空白的問題原因及解決方案

    初學鴻蒙開發(fā),按照官方文檔Web組件文檔《使用Web組件加載頁面》示例中的代碼照抄運行后顯示空白,糾結(jié)之余多方搜索后扔無解決方法。 無意間gitee搜索鴻蒙web組件項目代碼時看到 Web組件抽獎案例(ArkTS) Readme文檔中有一句話,如下: 本篇Codelab使用了在線網(wǎng)頁,需要在配

    2024年02月04日
    瀏覽(75)
  • 電腦啟動后出現(xiàn)白屏問題的可能原因及解決方案

    電腦開機后出現(xiàn)白屏問題是一種常見的故障,可能由多種原因引起。在本文中,我將介紹一些可能的原因,并提供相應(yīng)的解決方案,以幫助您解決這個問題。 顯示器故障:首先,檢查顯示器是否正常工作。可以嘗試連接另一個顯示器或電視,看看是否仍然出現(xiàn)白屏問題。如果

    2024年02月04日
    瀏覽(50)
  • 安卓之導(dǎo)致ANR的原因分析,問題定位以及解決方案

    ????????在Android應(yīng)用開發(fā)中,Application Not Responding(ANR)是一種常見的性能問題,它直接關(guān)系到用戶體驗的質(zhì)量。當應(yīng)用在特定時間段內(nèi)無法及時響應(yīng)用戶的交互或者系統(tǒng)事件時,系統(tǒng)將會拋出ANR錯誤,提示用戶應(yīng)用已停止響應(yīng)。為了確保應(yīng)用的流暢性和用戶滿意度,理解

    2024年03月13日
    瀏覽(36)
  • 成集云 | 樂享問題邀請同步企微提醒 | 解決方案

    成集云 | 樂享問題邀請同步企微提醒 | 解決方案

    源系統(tǒng) 成集云 目標系統(tǒng) 騰訊樂享是騰訊公司開發(fā)的一款企業(yè)社區(qū)化知識管理平臺,它提供了包括知識庫、問答、課堂、考試、活動、投票和論壇等核心應(yīng)用。這個平臺凝聚了騰訊10年的管理經(jīng)驗,可以滿足政府、企業(yè)和學校在知識管理、學習培訓、文化建設(shè)和內(nèi)部溝通的多

    2024年02月11日
    瀏覽(31)
  • 外部navicat無法連接mysql數(shù)據(jù)庫的問題原因及解決方案

    外部navicat無法連接mysql數(shù)據(jù)庫的問題原因及解決方案

    問題起因是這樣:在linux操作中的docker中部署了一個數(shù)據(jù)庫,數(shù)據(jù)庫啟動之后,端口也映射了(創(chuàng)建容器時用 -p 30036:3306進行的映射),但是在外不想使用navicat連接時,怎么都連不上,本人遇到的問題如下 一、端口雖然映射了,但是服務(wù)器上的30036端口并未對外開放,因此要先開

    2024年02月07日
    瀏覽(29)
  • Class path contains multiple SLF4J bindings.問題原因及解決方案

    問題背景 在進行l(wèi)ogback的日志輸出測試時,顯示如下錯誤 2、原因 根據(jù)上面的錯誤提示,存在多個SLF4J bindings綁定,即存在多個slf4j的實現(xiàn)類,按上圖所示這兩個實現(xiàn)分別是 logback-classic-1.2.6和slf4j-log4j12-1.6.1 ,我們需要的是logback而不是log4j, 3、解決方案 因此,我們?nèi)サ鬺og4j的

    2024年02月11日
    瀏覽(22)
  • 【網(wǎng)絡(luò)連接】ping不通的常見原因+解決方案,如何在只能訪問網(wǎng)關(guān)時診斷,并修復(fù)IP不通的問題

    【網(wǎng)絡(luò)連接】ping不通的常見原因+解決方案,如何在只能訪問網(wǎng)關(guān)時診斷,并修復(fù)IP不通的問題

    ??你好呀!我是 是Yu欸 ?? 2024每日百字篆刻時光,感謝你的陪伴與支持 ~ ?? 歡迎一起踏上探險之旅,挖掘無限可能,共同成長! 前些天發(fā)現(xiàn)了一個人工智能學習網(wǎng)站,內(nèi)容深入淺出、易于理解。如果對人工智能感興趣,不妨點擊查看。 粉絲交流貼:網(wǎng)關(guān)能通IP不通可能有

    2024年03月09日
    瀏覽(107)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包