国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

MySQL中延遲問(wèn)題和數據刷盤(pán)策略流程的示例分析

發(fā)布時(shí)間:2021-08-08 19:37 來(lái)源:億速云 閱讀:0 作者:小新 欄目: Mysql 歡迎投稿:712375056

這篇文章給大家分享的是有關(guān)中延遲問(wèn)題和數據刷盤(pán)策略流程的示例分析的內容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

一、MySQL復制流程

官方文檔流程如下:

MySQL延遲問(wèn)題和數據刷盤(pán)策略

1、絕對的延時(shí),相對的同步

2、純寫(xiě)操作,線(xiàn)上標準配置下,從庫壓力大于主庫,最起碼從庫有relaylog的寫(xiě)入。

二、MySQL延遲問(wèn)題分析

1、主庫DML請求頻繁

原因:主庫并發(fā)寫(xiě)入數據,而從庫為單線(xiàn)程應用日志,很容易造成relaylog堆積,產(chǎn)生延遲。

解決思路:做sharding,打散寫(xiě)請求??紤]升級到MySQL5.7+,開(kāi)啟基于邏輯時(shí)鐘的并行復制。

2、主庫執行大事務(wù)

原因:類(lèi)似主庫花費很長(cháng)時(shí)間更新了一張大表,在主從庫配置相近的情況下,從庫也需要花幾乎同樣的時(shí)間更新這張大表,此時(shí)從庫延遲開(kāi)始堆積,后續的events無(wú)法更新。

解決思路:拆分大事務(wù),及時(shí)提交。

3、主庫對大表執行DDL語(yǔ)句

原因:DDL未開(kāi)始執行,被阻塞,檢查到位點(diǎn)不變;DDL正在執行,單線(xiàn)程應用導致延遲增加,位點(diǎn)不變。

解決思路:找到被阻塞DDL或是寫(xiě)操作的查詢(xún),干掉該查詢(xún),讓DDL正常在從庫上執行;業(yè)務(wù)低峰期執行,盡量使用支持OnlineDDL的高版本MySQL。

4、主從實(shí)例配置不一致

原因:硬件上:主庫實(shí)例使用SSD,而從庫實(shí)例服務(wù)器使用普通SAS盤(pán)、cpu主頻不一致等;配置上:如RAID卡寫(xiě)策略不一致,OS內核參數設置不一致,MySQL落盤(pán)策略(innodb_flush_log_at_trx_commit和sync_binlog等)不一致等

解決思路:盡量統一DB機器的配置(包括硬件及選項參數);甚至對于某些OLAP業(yè)務(wù),從庫實(shí)例硬件配置高于主庫等。

5、從庫自身壓力過(guò)大

原因:從庫執行大量select請求,或業(yè)務(wù)大部分select請求被路由到從庫實(shí)例上,甚至大量OLAP業(yè)務(wù),或者從庫正在備份等,此時(shí)可能造成cpu負載過(guò)高,io利用率過(guò)高等,導致SQLThread應用過(guò)慢。

解決思路:建立更多西安數據庫培訓從庫,打散讀請求,降低現有從庫實(shí)例的壓力。

也可以調整innodb_flush_log_at_trx_commit=0和sync_binlog=0刷盤(pán)參數來(lái)緩解IO壓力來(lái)降低主從延遲。

三、大促期間CPU過(guò)高問(wèn)題

現象:

高并發(fā)導致CPU負載過(guò)高,處理請求時(shí)間拉長(cháng),逐步積壓,最終導致服務(wù)不可用;大量的慢SQL導致CPU負載過(guò)高。

解決思路:

基本上是禁止或是慎重考慮數據庫主從切換,這個(gè)解決不了根本問(wèn)題,需要研發(fā)配合根治SQL問(wèn)題,也可以服務(wù)降級,容器的話(huà)可以動(dòng)態(tài)擴容CPU;和業(yè)務(wù)協(xié)商啟動(dòng)pt-kill查殺只讀慢SQL;查看是否可以通過(guò)增加一般索引或是聯(lián)合索引來(lái)解決慢SQL問(wèn)題,但此時(shí)要考慮DDL對數據庫影響。

四、InnoDB刷盤(pán)策略

MySQL的innodb_flush_method這個(gè)參數控制著(zhù)innodb數據文件及redolog的打開(kāi)、刷寫(xiě)模式,對于這個(gè)參數,文檔上是這樣描述的:

有三個(gè)值:fdatasync(默認),O_DSYNC,O_DIRECT

默認是fdatasync,調用fsync()去刷數據文件與redolog的buffer

為O_DSYNC時(shí),innodb會(huì )使用O_SYNC方式打開(kāi)和刷寫(xiě)redolog,使用fsync()刷寫(xiě)數據文件

為O_DIRECT時(shí),innodb使用O_DIRECT打開(kāi)數據文件,使用fsync()刷寫(xiě)數據文件跟redolog

首先文件的寫(xiě)操作包括三步:open,write,flush

上面最常提到的fsync(intfd)函數,該函數作用是flush時(shí)將與fd文件描述符所指文件有關(guān)的buffer刷寫(xiě)到磁盤(pán),并且flush完元數據信息(比如修改日期、創(chuàng )建日期等)才算flush成功。

使用O_DSYNC方式打開(kāi)redo文件表示當write日志時(shí),數據都write到磁盤(pán),并且元數據也需要更新,才返回成功。

O_DIRECT則表示我們的write操作是從MySQLinnodbbuffer里直接向磁盤(pán)上寫(xiě)。

這三種模式寫(xiě)數據方式具體如下:

fdatasync模式:寫(xiě)數據時(shí),write這一步并不需要真正寫(xiě)到磁盤(pán)才算完成(可能寫(xiě)入到操作系統buffer中就會(huì )返回完成),真正完成是flush操作,buffer交給操作系統去flush,并且文件的元數據信息也都需要更新到磁盤(pán)。

O_DSYNC模式:寫(xiě)日志操作是在write這步完成,而數據文件的寫(xiě)入是在flush這步通過(guò)fsync完成

O_DIRECT模式:數據文件的寫(xiě)入操作是直接從mysqlinnodbbuffer到磁盤(pán)的,并不用通過(guò)操作系統的緩沖,而真正的完成也是在flush這步,日志還是要經(jīng)過(guò)OS緩沖。

MySQL延遲問(wèn)題和數據刷盤(pán)策略

1、在類(lèi)unix操作系統中,文件的打開(kāi)方式為O_DIRECT會(huì )最小化緩沖對io的影響,該文件的io是直接在用戶(hù)空間的buffer上操作的,并且io操作是同步的,因此不管是read()系統調用還是write()系統調用,數據都保證是從磁盤(pán)上讀取的;所以IO方面壓力最小,對于CPU處理壓力上也最小,對物理內存的占用也最??;但是由于沒(méi)有操作系統緩沖的作用,對于數據寫(xiě)入磁盤(pán)的速度會(huì )降低明顯(表現為寫(xiě)入響應時(shí)間的拉長(cháng)),但不會(huì )明顯造成整體SQL請求量的降低(這有賴(lài)于足夠大的innodb_buffer_pool_size)。

2、O_DSYNC方式表示以同步io的方式打開(kāi)文件,任何寫(xiě)操作都將阻塞到數據寫(xiě)入物理磁盤(pán)后才返回。這就造成CPU等待加長(cháng),SQL請求吞吐能力降低,insert時(shí)間拉長(cháng)。

3、fsync(intfiledes)函數只對由文件描述符filedes指定的單一文件起作用,并且等待寫(xiě)磁盤(pán)操作結束,然后返回。fdatasync(intfiledes)函數類(lèi)似于fsync,但它只影響文件的數據部分。而除數據外,fsync還會(huì )同步更新文件的元信息到磁盤(pán)。

O_DSYNC對CPU的壓力最大,datasync次之,O_DIRECT最??;整體SQL語(yǔ)句處理性能和響應時(shí)間看,O_DSYNC較差;O_DIRECT在SQL吞吐能力上較好(僅次于datasync模式),但響應時(shí)間卻是最長(cháng)的。

默認datasync模式,整體表現較好,因為充分利用了操作系統buffer和innodb_buffer_pool的處理性能,但帶來(lái)的負面效果是free內存降低過(guò)快,最后導致頁(yè)交換頻繁,磁盤(pán)IO壓力大,這會(huì )嚴重影響大并發(fā)量數據寫(xiě)入的穩定性。

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

亚洲日本人成网站在线播放| 久久国产色AV免费看| 狠狠色色综合网站| 亚洲一区二区三区自拍公司| 久久精品国产72国产精| 五月综合激情婷婷六月|