Mysql

優化 mysqldump 大約。8GB RAM 的 20GB 數據庫

  • March 29, 2017

MySQL 伺服器具有以下規格:

  1. 8GB 記憶體

  2. 數據和索引大小 49.64GB

  3. 轉儲文件大小為 17.24GB(18512936320 字節)

  4. 中央處理器:

  5. 處理器:Intel(R) Core(TM) i5-3330 CPU @ 3.00GHz

  6. 架構:x86_64

  7. 供應商:英特爾公司

  8. 尺寸:2400MHz

  9. 容量:2400MHz

  10. 寬度:64 位

  11. 你:

  12. 經銷商編號:Ubuntu

  13. 說明:Ubuntu 14.04.5 LTS

  14. 發布:14.04

  15. 代號:靠譜

可用記憶體(RAM):這可能會在特定時間發生變化

        total       used       free     shared    buffers     cached

記憶體:7.7G 5.2G 2.5G 15M 44M 4.6G -/+ 緩衝區/記憶體:597M 7.1G 交換:7.9G 61M 7.8G

數據庫 98% 的表是InnoDB,其餘的是MyISAM

我使用了以下查詢:

mysqldump -u root -p --single-transaction --routines --events --triggers --all-databases | gzip > all_databases_backup.sql.gz

我嘗試了以下全域變數:

key_buffer_size = 512M
Innodb_buffer_pool_size = 1024M
innodb_io_capacity = 2000
innodb_read_io_threads = 64
innodb_write_io_threads = 64
innodb_thread_concurrency = 0

優化備份總時間,但不僅能減少時間甚至 1 分鐘。

  • 使用預設設置需要最少:27 分鐘
  • 使用上面顯示的設置需要:26分鐘

還有什麼我必須配置的東西來優化mysqldump嗎?

我不確定總時間是否會得到顯著改善,但有以下一些建議:

  • 我建議你 - 將所有表轉換為 InnoDB 格式,並為 InnoDB 調整記憶體:

Innodb_buffer_pool_size = 4096M

主要原因 - 單引擎優化更容易調整,MyISAM 不受 –single-transaction 影響

  • 拆分轉儲和 GZIP

我不知道,你在 MyISAM 中有哪一部分錶,但它總是更好 - 盡可能快地完成數據庫的所有工作,而不是繼續其他步驟

GZIP 可能是您的腳本中最慢的部分,並且確實沒有優化。它使用單核而不取決於你有多少。

引用自:https://dba.stackexchange.com/questions/167700