mysqldump備份大數據出錯

mysqldump備份大數據出錯技術

maybe yes 發表於2015-01-26 22:58php

原文連接 : http://blog.lmlphp.com/archives/72  來自 : LMLPHP後院mysql

網 站的數據會按期備份,如今數據大了,mysqldump 方法估計是不行了,而且失敗了之後並不能接着上次的位置開始備份。報錯內容:mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `table name` at row: 23699。sql

Lost connection to MySQL server,在使用 mysqldump 的時候(尤爲是向 NFS 上備份的時候),不少人都被「mysqldump:Got error:2013: Lost connection to MySQL server during query when dumping table」的問題困擾,在Manual中對這個問題有一些簡單的說明。
在向NFS上備份的時候,數據的流向是這樣的:MySQL Server 端從數據文件中檢索出數據,而後分批將數據返回給mysqldump 客戶端,而後 mysqldump 將數據寫入到NFS上。通常地,向 NFS 上寫入數據的速度較之Server端檢索發送數據的速度要慢得多,這就會致使 mysqldump 沒法及時的接受 Server 端發送過來的數據,Server 端的數據就會積壓在內存中等待發送,這個等待不是無限期的,當 Server 的等待時間超過 net_write_timeout(默認是60秒)時它就失去了耐心,mysqldump 的鏈接會被斷開,同時拋出錯誤 Got error: 2013: Lost connection。
增長 net_write_timeout 能夠解決上述的問題的。在實踐中發現,在增大 net_write_timeout 後,Server 端會消耗更多的內存,有時甚至會致使 swap 的使用(並不肯定是否是修改 net_write_timeout 所至)。建議在mysqldump 以前修改 net_write_timeout 爲一個較大的值(如1800),在 mysqldump 結束後,在將這個值修改到默認的60。
Lost connection to MySQL server during query 錯誤
形成這樣的錯誤緣由不少
我的經驗認爲先試一試這兩個參數,大部分都是這個緣由引發的:
bind-address = 127.0.0.1
skip-name-resolve
這兩個參數任意一個就行。
也就是說遇到2006,2013錯誤就從新鏈接一下MySQL。
MySQL層面,須要配置一些參數 my.cnf
wait_timeout = x 超時時間
max_allowed_packet = y 最大容許數據量
通常出現這種狀況不是全部例句而是單個表,請你先修復表通常都能解決這類問題
備份不要在數據庫壓力較大的時候進行,天天凌晨備份是比較合適的
若是是事務型引擎(InnoDB),建議使用 --single-transaction 參數,這樣可讓鎖表時間變得很短。數據庫

上 面是作法估計是行不通了,網站在虛擬主機上,修改 MySQL 配置是不太可能的。MySQL 官網也有相似的報告 http://bugs.mysql.com/bug.php?id=47702 。暫時只能使用 --ignore-table=<database>.<table> 選項忽略比較大的表暫時不備份吧。大數據

閱(69)評(0)查看評論網站

相關文章
相關標籤/搜索