亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        MySQL從庫延遲故障

        2020-08-11 09:37:24
        網(wǎng)絡(luò)安全和信息化 2020年8期
        關(guān)鍵詞:數(shù)據(jù)表數(shù)據(jù)量時間段

        編者按:筆者此次遇到某客戶的MySQL數(shù)據(jù)庫出現(xiàn)了Slave庫操作延遲的故障,給數(shù)據(jù)的查詢操作帶來了很大的影響,最終判斷是向其中添加大量的數(shù)據(jù)導(dǎo)致從節(jié)點難以應(yīng)對。

        某單位的管理系統(tǒng)后端采用的是MySQL數(shù)據(jù)庫,安裝的都是CentOS 7.X,硬件配置為八核心的CPU,32 GB內(nèi)存。

        為了提高性能,系統(tǒng)配置了MySQL主從復(fù)制架構(gòu)。Master庫主要執(zhí)行數(shù)據(jù)的寫入操作,Slave庫主要提供屬于的查詢操作。

        該系統(tǒng)最近以來,出現(xiàn)了Slave庫操作延遲的故障,表現(xiàn)為延遲將近一個小時后才恢復(fù)正常,這給數(shù)據(jù)的查詢操作帶來了不利的影響。

        故障排查

        對于MySQl主從復(fù)制延遲故障來說,在很多情況下都是因為主庫的DML操作引發(fā)的。例如,當(dāng)主庫存在慢查詢操作,自然會引起從庫的延遲。

        但是筆者觀察主庫的慢查詢?nèi)罩?,并沒有在發(fā)生從庫延遲的時間段內(nèi)發(fā)現(xiàn)慢查詢操作,這說明該問題和主庫的慢查詢無關(guān)。對從庫的日志信息進(jìn)行查看,也沒有發(fā)現(xiàn)執(zhí)行過慢查詢語句的情況。

        慢查詢?nèi)罩静⒎侵粫涗泩?zhí)行比較慢的DML語句,只要DML語句的執(zhí)行超過了指定的時間,都可以稱之為慢查詢。默認(rèn)設(shè)置下,執(zhí)行超過10 s的語句才會被記錄到慢查詢?nèi)罩局?。在MySQL控制臺中執(zhí)行“show global status like'%slow_queries%'”命令,查看從MySQL服務(wù)啟動以后慢查詢語句的總量。

        打開“/data/mysql/auditlogs/server_audit.log”文件,查看MySQL的審計日志,發(fā)現(xiàn)在延遲的時間段內(nèi)出現(xiàn)了大量的并發(fā)插入操作,這些數(shù)量很大的插入操作很有可能引發(fā)從庫的延遲故障。

        要想深入查看MySQL歷史操作信息,還必須依靠其二進(jìn)制日志來實現(xiàn)。在二進(jìn)制日志中記錄了MySQL的所有DDL和DML語句信息,當(dāng)然,對于Select語句來說是不記錄的。對于所記錄的每條語句,還會顯示其消耗的時間。根據(jù)這些內(nèi)容,就可以清晰的了解上述插入語句的相關(guān)執(zhí)行情況。

        使用VI等工具是無法查看MySQL的二進(jìn)制日志的,必須使用自帶的mysqlbinlog工具來查看。

        例如,執(zhí)行“mysqlbinlog mysql-bin.00000x”命令,可以查看指定的二進(jìn)制日志內(nèi)容,其中的“x”表示具體的編號。因為我們只是對發(fā)生從庫延遲的時間段看,所以需要過濾該時間段內(nèi)的日志信息。

        執(zhí)行“mysqlbinlog--no-defaults --startdatetime='2020-01-10 10:20:00' --stop-datetime='2020-01-10 11:10:00' --base64-output=decoderows -vv mysql-bin.00xxxx> sql.txt”命令,將指定時間段的日志信息導(dǎo)出到目標(biāo)文件中。

        因為需要查詢該時間段的插入語句執(zhí)行情況,所以執(zhí)行“cat mysql.txt|grep-v SET |grep INSERT|wc-l”命令,來過濾其中的插入語句的數(shù)量信息。根據(jù)查詢到的結(jié)構(gòu),發(fā)現(xiàn)在該時間段內(nèi)執(zhí)行了500多萬次的數(shù)據(jù)Insert操作。毫無疑問,大量的Insert操作自然會導(dǎo)致從庫應(yīng)接不暇,出現(xiàn)延遲故障就不足為奇了。

        接下來需要探查究竟是哪些數(shù)據(jù)表進(jìn)行了大量的插入操作,就可以準(zhǔn)確的判斷問題的根源。

        使 用“iostat” “iotop”命令,可以幫助用戶了解磁盤I/O信息。對于數(shù)據(jù)表的I/O情況進(jìn)行分析,就需要使用到“pt-ioprofile”這款實用工具,該工具包含在Percona-Toolkit軟件包 中,執(zhí) 行“yum install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IOSocket-SSL” “yum install https://www.percona.com/redir/downloads/perconarelease/redhat/0.1-6/percona-release-0.1-6.noarch.rpm” “yum install percona-toolkit”命令,來安裝該工具包。

        當(dāng)從庫再次出現(xiàn)延遲故障時,執(zhí)行“pt-ioprofile--profile-process=my sqld --run-time=120--save-samples=mysql_ioprofile.txt --groupby=filename --cell=sizes--aggregate=avg”命令,來收集其120 s內(nèi),MySQL數(shù)據(jù)庫中存在I/O操作的文件信息,以及各種調(diào)用平均每秒產(chǎn)生的數(shù)據(jù)量。

        其中“profile-process”參數(shù)為指定MySQL的進(jìn)程名,“run-time”參數(shù)指定采集時間,“save-samples”參數(shù)指定輸出文件名稱,“-groupby”參數(shù)執(zhí)行聚合的方式,這里采用的文件聚合方式。“cell”參數(shù)指定系統(tǒng)調(diào)用傳輸數(shù)據(jù)量,“aggregate”參數(shù)指定計算平均值。

        并且在返回信息中的“filename”列中顯示MySQL各數(shù)據(jù)表和日志名稱,在“total”列中顯示了對應(yīng)的在指定時間中產(chǎn)生的數(shù)據(jù)量,在“pread” “pwrite”以及“fsync”列中顯示了對應(yīng)的讀取、寫入和同步的數(shù)據(jù)量。

        根據(jù)這些信息,可以看出究竟哪些數(shù)據(jù)表產(chǎn)生的I/O數(shù)據(jù)量最大。

        故障解決

        根據(jù)以上分析,可以看到在MySQL中名為“cdrdat”和“docutk1”的數(shù)據(jù)表產(chǎn)生的I/O量很大。在這兩個表中存儲了大量的基礎(chǔ)數(shù)據(jù)。執(zhí)行“crontab -l”命令,查看當(dāng)前用戶的定時任務(wù)信息,發(fā)現(xiàn)其中存在幾個腳本文件,其作用就是按照指定的時間,向上述MySQL中添加大量的數(shù)據(jù)。

        筆者了解到,由于該管理系統(tǒng)正在進(jìn)行優(yōu)化和調(diào)整,需要向其中添加大量的數(shù)據(jù)。因此,開發(fā)部門人員為了提高效率,就編寫了相應(yīng)的腳本程序,利用計劃任務(wù)定時向MySQL中插入大量的數(shù)據(jù)。

        但是數(shù)據(jù)庫管理員人員對其并不了解,大量的數(shù)據(jù)插入操作必然導(dǎo)致主節(jié)點的磁盤I/O處于忙碌狀態(tài),在指定的時間段向從節(jié)點寫入大量數(shù)據(jù),導(dǎo)致從節(jié)點難以應(yīng)對,才出現(xiàn)了以上延遲的問題。

        處理的方法是,對上述腳本進(jìn)行優(yōu)化,使其在多個時間段內(nèi)分批向MySQL插入數(shù)據(jù),來降低對MySQL的數(shù)據(jù)寫入的壓力,以保證MySQL主從復(fù)制結(jié)構(gòu)可以正常運作。

        針對上述故障,可以看出當(dāng)MySQL出現(xiàn)較大的訪問量時,必須對其進(jìn)行優(yōu)化處理,才可以避免故障的發(fā)生。一般來說,可以使用主從復(fù)制,讀寫分離和負(fù)載均衡等方法來實現(xiàn)。對于SQL語句進(jìn)行優(yōu)化,也可以有效的提高數(shù)據(jù)庫運行效率。

        因為SQL語句編寫平庸,沒有使用索引等問題,同樣會導(dǎo)致數(shù)據(jù)庫性能低下。例如,建立索引可以提高查詢速度,在諸如Where、Order by以及Group by等語句涉及的列上建立索引,來提高查詢速度等。使用Explain可以選擇更好的索引和優(yōu)化查詢語句,它基于圖形化或基于文本的方式,詳細(xì)說明了SQL語句的每個部分的執(zhí)行情況,通過選擇更好的索引列,對費時較長SQL語句進(jìn)行優(yōu)化,來提高查詢速度。

        對于體積較大的數(shù)據(jù)表來說,可以采取分表的辦法,來降低數(shù)據(jù)庫的數(shù)據(jù)庫的負(fù)擔(dān)提高查詢的效能。對于數(shù)據(jù)量很大但是訪問的用戶很少的情況,可以采取分表的方法加以應(yīng)對。對于數(shù)據(jù)量不大但訪問用戶很多的情況,才可以采取分庫的方法,來解決數(shù)據(jù)庫端并發(fā)量大的問題。

        猜你喜歡
        數(shù)據(jù)表數(shù)據(jù)量時間段
        基于大數(shù)據(jù)量的初至層析成像算法優(yōu)化
        計算Lyapunov指數(shù)的模糊C均值聚類小數(shù)據(jù)量法
        高刷新率不容易顯示器需求與接口標(biāo)準(zhǔn)帶寬
        夏天曬太陽防病要注意時間段
        湖北省新冠肺炎疫情數(shù)據(jù)表
        黨員生活(2020年2期)2020-04-17 09:56:30
        寬帶信號采集與大數(shù)據(jù)量傳輸系統(tǒng)設(shè)計與研究
        電子制作(2019年13期)2020-01-14 03:15:18
        基于列控工程數(shù)據(jù)表建立線路拓?fù)潢P(guān)系的研究
        發(fā)朋友圈沒人看是一種怎樣的體驗
        意林(2017年8期)2017-05-02 17:40:37
        不同時間段顱骨修補對腦血流動力學(xué)變化的影響
        圖表
        国产精品福利高清在线| 日本国产视频| 久久中文字幕日韩精品| 日本在线免费一区二区三区| 青青草免费在线爽视频| 亚洲av无码一区二区三区乱子伦| 久久99精品久久久久久| 日韩av无卡无码午夜观看| 亚洲肥婆一区二区三区| 精品综合久久久久久888蜜芽| 国内老熟妇对白xxxxhd| 一本色道久久88加勒比综合| 国产精品一区二区韩国av| 人妻激情偷乱视频一区二区三区| 吃奶摸下的激烈视频| 音影先锋色天堂av电影妓女久久 | 五月中文字幕| 日本大片在线一区二区三区 | 国产精品二区一区二区aⅴ污介绍| 狠狠色丁香久久婷婷综合蜜芽五月 | 初女破初的视频| 国产精品九九热| 91精品国产综合久久国产| 亚洲日韩精品无码av海量| 中文字幕无码家庭乱欲| 午夜国产精品视频免费看电影| 亚洲激情综合中文字幕| 免费毛片a线观看| 亚洲天堂中文| 白色白色白色在线观看视频| 国产69久久精品成人看| 欧美日韩久久久精品a片| 看黄色亚洲看黄色亚洲| 免费在线观看播放黄片视频| 熟妇丰满多毛的大隂户| 日韩偷拍一区二区三区视频| 特级黄色大片性久久久| 人与动牲交av免费| 亚洲最大成av人网站| 亚洲av高清一区三区三区| 精品视频一区二区三区在线观看|