MySQ
創(chuàng)新互聯(lián)長(zhǎng)期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為云巖企業(yè)提供專業(yè)的
做網(wǎng)站、成都做網(wǎng)站,
云巖網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。L主從延遲情況共分為以下四類
一.MIXED模式無(wú)索引或SQL慢
在從庫(kù)上
pager grep -v Sleep;show processlist 查看到正在執(zhí)行的SQL
解決方法:
1.SQL比較簡(jiǎn)單,則檢查否缺少索引,并添加索引。例如update操作where條件無(wú)索引。
2.SQL比較復(fù)雜,例如insert into select from語(yǔ)句,如果select里包含group by,多表關(guān)聯(lián),可能效率會(huì)比較低。這類可以到主庫(kù)把binlog_format改為row.
二.主庫(kù)上有大事務(wù),導(dǎo)致從庫(kù)延時(shí)
解決方法:
找開發(fā)人員溝通,增加緩存,異步寫入數(shù)據(jù)庫(kù),減少對(duì)DB的大量寫入。
三.主庫(kù)寫入頻繁,從庫(kù)壓力跟不上主庫(kù)導(dǎo)致延時(shí)
此類原因的主要現(xiàn)象是數(shù)據(jù)庫(kù)的IUD(增改刪)操作非常多,slave由于sql_thread單線程的原因追不上主庫(kù)的寫操作。
解決方法:
1.升級(jí)主庫(kù)的硬件配置,比如ssd、fio
2.設(shè)置日志刷新頻率:
set global_sync_binlog=0;
- innodb_flush_log_at_trx_commit=0每秒將log_buffer的內(nèi)容刷新到logfile,并且將日志同步刷新到磁盤。該模式下,在事務(wù)提交的時(shí)候,不會(huì)主動(dòng)觸發(fā)寫入磁盤的操作。
- innodb_flush_log_at_trx_commit=1每次commit將log_buffer刷新到logfile,并且將日志同步刷新到磁盤。
- innodb_flush_log_at_trx_commit=2每次commit將log_buffer刷新到logfile,但是flush(刷到磁盤)操作并不會(huì)同時(shí)進(jìn)行,每秒將日志刷新到磁盤。
四.數(shù)據(jù)庫(kù)中存在大量myisam表,在備份的時(shí)候?qū)е聫膸?kù)延遲
由于xtrabackup工具備份到最后會(huì)執(zhí)行flush tables with read lock,對(duì)數(shù)據(jù)庫(kù)進(jìn)行鎖表以便進(jìn)行一致性備份,然后對(duì)于myisam表鎖,會(huì)阻礙slave sql_thread線程停滯運(yùn)行而導(dǎo)致hang。
該問(wèn)題目前比較好的解決方法是修改表結(jié)構(gòu)為innod存儲(chǔ)引擎的表。
分享文章:MySQL主從延遲解決方法的歸納和總結(jié)-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:
http://weahome.cn/article/ceosph.html