2011-08-05 372 views
1

客戶端剛剛有〜1000行數據(當然是最近的),只是在其中一個表中丟失。做了一些取證,我發現表中所有其他行的「last_updated_date」也被設置爲大致與刪除發生時相同。這不是他們較大的表格之一。MySQL轉儲限制? MySQL的整體數據庫大小限制?

其他一些奇怪的是,上週的mysqldumps都是確切的相同的大小 - 10375605093字節。以前的轉儲每個增長約0.5GB。 MySQL的轉儲命令是標準:

/path/to/mysqldump -S /path/to/mysqld2.sock --lock-all-tables -u username -ppassword database > /path-to-backup/$(date +%Y%m%d)_live_data.mysqldump 

DF -h在框顯示足夠的空間(至少50%)在每一個目錄中。

數據丟失加上他們的轉儲沒有增加的事實讓我擔心,不知何故,我們在MySQL中遇到了一些硬編碼限制(上帝,我希望我是錯的),數據被破壞。有人聽說過這樣的事嗎?我們如何解釋mysqldump的大小?

回答

0

MySQL可以處理的數據量沒有硬編碼限制。

+0

深入挖掘......這不是「max_allowed_pa​​cket」問題(alahttp://rackerhacker.com/2007/10/11/mysqldump-got-packet-bigger-than-max_allowed_pa​​cket-bytes/),文件系統是Linux/ext4 ...最大文件大小爲16TB(http://en.wikipedia.org/wiki/Ext4)。 – rICh

3

如果您正在進行多個多場轉儲並在半途中空間不足,50%的可用空間並不意味着太多。除非你存儲在你的轉儲二進制數據,他們是有相當可壓縮的,所以我建議通過gzip的管道mysqldump的輸出輸出到文件之前:

mysqldump .... | gzip -9 > /path_to_backup/.... 

的MySQL本身不具有任何說任意限制「在X演出之後不再有更多」,但是它的運行平臺有限制,detailed here

+0

這絕對沒有磁盤空間不足......每個轉儲都是〜10GB,磁盤有366GB Avail – rICh

+1

您可能希望將stderr重定向到另一個文件以捕獲任何輸出myssqldump產生的錯誤。 'msyqldump ...> dump.sql 2> dump.err'並查看那裏顯示的內容。例如,如果數據庫中有一個blob超過max_allowed_pa​​cket,那麼轉儲將在該點中止。從命令行(使用我們的無卸載stderr)運行的 –

+0

仍然沒有產生輸出......它看起來好像完美無缺(但文件在10375605093處完成)。數據目錄上的du -k顯示它現在約爲1.45 GB(並且正在增長)。我真的沒有被打倒。 tail-1在轉儲文件中顯示預計「在2011-08-05 17:33:29完成轉儲」... – rICh