Mysql資料不算大,備份卻非常慢

來源:互聯網
上載者:User

環境
硬體:DELL 1950, 146G SAS 15K RPMS * 2, 8G Ram
軟體:2.6.9-55.ELsmp x86_64, mysql 5.1.x

現象
2個庫,其中1個業務庫下有20多個表,表檔案大小總量不到2G。
另一個為日誌庫,下400多個表,大致是每天會產生5個表,其中有一個表較大,約400MB,總量約40多GB。
每次備份耗時較長,最嚴重的一次花了5個多小時才完成。
業務庫為當前活動庫,日誌庫則主要用作備份,每天日誌歸檔,到期資料表很少有讀寫請求。
InnoDB Buffer Pool總共分配了2G,從系統命令 top 結果來看,mysqld 只分配了 1.7G 記憶體,buffer pool 並沒有全部耗盡。
SHOW ENGINE INNODB STATUS 結果中也看到了,buffer pool 確實沒用完,還有不少閒置。
備份時,觀察 vmstat 結果,發現 bi 和 bo 的量較大,而且兩個的值基本相當,備份其中一個表約 500MB,耗時 46 秒。
按照這個耗時計算,全部備份出來也不需要5個多小時,這是為什麼呢?

分析
大家先分析下,看是什麼原因,稍後給出答案

原因 其實問題原因很簡單,但一般人不容易想到。那就是,那些曆史的日誌表,由於長時間不讀取,大部分資料沒有在innodb buffer中。所以,每次備份時,大部分資料都要產生大量的物理讀,然後再產生物理寫,然而該伺服器只有2塊硬碟,I/O效能有限,所以備份非常慢。

這時候,我們可以有幾種解決辦法:
1. 刪除到期日誌表,或者放到線下的歸檔資料庫上
2. 如果innodb buffer還有大量閒置話,可以不定期執行select * from table,將這部分資料load到buffer中,減少備份時的物理I/O,提高速度

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.