2016-11-11 91 views
0

場景:爲什麼mysqldump變得如此之大?

MySQL數據庫主要是MyISAM表。 MySQL的文件系統的當前權重:

80K ./casin_emails 
212K ./performance_schema 
371M ./casin_info 
32K ./percona 
572K ./casin 
1.1M ./mysql 
67G . 

,你注意到了大部分空間都來自ibdata文件

17956960 67G -rw-rw---- 1 mysql mysql 67G Nov 11 11:45 ibdata1 
17956940 5.0M -rw-rw---- 1 mysql mysql 5.0M Nov 11 11:45 ib_logfile0 
17956939 5.0M -rw-rw---- 1 mysql mysql 5.0M Nov 11 10:44 ib_logfile1 

在寫的時刻這個問題的mysqldump的仍在運行過程中寫的14文件Gbytes的。

所以我的問題也許很明顯。爲什麼mysqldump正在創建如此龐大的文件,如果數據庫的當前空間非常小?是ibdata有罪嗎?

我想我無法避免mysqldump需要在ibadata上生成某種數據備份的事實,但我只想確定並知道爲什麼會發生這種情況。

謝謝!

PS:我以前搜索過關於這個問題,但我發現的所有帖子都是關於如何縮小數據庫,這不是我目前的問題。

+1

此鏈接可能會有幫助https://www.percona.com/blog/2013/08/20/why-is-the-ibdata1-file-continuously-growing-in-mysql/ – Samir

+1

mysqldump'genenerates SQL由於SQL語言的性質而冗長的查詢。 – axiac

回答

2

作爲上mysqldump MySQL文檔說(高亮是礦):

的mysqldump的客戶實用程序執行邏輯備份,產生集可被執行以再現原始數據庫對象定義和SQL語句的表數據。

因此,mysqldump不會簡單地導出數據,而是將它們轉換成sql語句。而且,所有數據都以文本形式導出,因此每個數字數據和空值將佔用比數據庫更多的空間。

+0

我理解你所有的觀點,但是如果mysqldump使**「一組SQL語句」**,如果數據庫的大小是371M,最重的(./casin_info)...是所有與這個SQL語句相關的數據?或者ibdata也有這樣的說法嗎?因爲我還不明白如此小的數據庫(300 M)或更少可以生成一個Gb級的.sql文件。我不知道你是否看到我的觀點...... – Rubendob

+0

ibdata1是innodb表空間的默認文件名,所以它將包含innodb表中的所有數據。 – Shadow

相關問題