通常情況下,當mysql數(shù)據(jù)庫存儲空間滿了,就會導致網(wǎng)站內(nèi)部溝通的異常,只能讀出不能寫入。具體表現(xiàn)為:一些源碼程序的網(wǎng)站后臺打不開,比如dede織夢程序;或者導致一些文章的資源發(fā)布失敗,比如wordpress程序一般管理后臺可以打開,但就是發(fā)布不了文章。當我們遇到管理后臺突然打不開了,或者突然發(fā)布文章失敗,就要有意識地懷疑是不是數(shù)據(jù)庫滿了還是連接出現(xiàn)了什么問題。
涪陵網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)公司成立于2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
數(shù)據(jù)庫文件可以拷貝出來的。另外,磁盤空間的問題,你可以刪些無關(guān)的內(nèi)容啊……
比如 /usr/share 里面的 man 和 doc 什么的,先拷貝到 U 盤上,之后刪了騰出空間,把數(shù)據(jù)庫數(shù)據(jù)導出來后再恢復(fù)這些臨時刪掉的數(shù)據(jù)就行了。
一般來說,你可以先試試刪掉舊的不用的 log 。
當磁盤空間寫滿了之后,MySQL是無法再寫入任何數(shù)據(jù)的,包括對表數(shù)據(jù)的寫入,以及binlog、binlog-index等文件。
當然了,因為InnoDB是可以把臟數(shù)據(jù)先放在內(nèi)存里,所以不會立刻表現(xiàn)出來無法寫入,除非開啟了binlog,寫入請求才會被阻塞。
當MySQL檢測到磁盤空間滿了,它會:
每分鐘:檢查空間是否得到釋放,以便寫入新數(shù)據(jù)。當發(fā)現(xiàn)有剩余空間了,就會繼續(xù)寫入數(shù)據(jù),一切照舊。
每十分鐘:如果還是發(fā)現(xiàn)沒剩余空間,則會在日志中寫入一條記錄,報告磁盤空間滿(這時候只寫入幾個字節(jié)還是夠的)。
應(yīng)該怎么辦
那么,當發(fā)現(xiàn)磁盤空間滿了之后,我們應(yīng)該怎么處理呢,建議:
提高監(jiān)控系統(tǒng)檢測頻率,預(yù)防再次發(fā)生;
及時刪除不用的文件,釋放空間;
若有線程因磁盤滿的問題被阻塞了,可先殺掉,等到下一分鐘重新檢測時它可能又可以正常工作了;
可能因磁盤滿導致某些線程被阻塞,引發(fā)其他線程也被阻塞,可把導致阻塞的線程殺掉,其他被阻塞的線程也就能繼續(xù)工作了。
例外
有個例外的情況是:
當執(zhí)行 REPAIR TABLE 或者 OPTIMIZE TABLE 操作時,或者執(zhí)行完 LOAD DATA INFILE 或 ALTER TABLE 之后批量更新索引時,這些操作會創(chuàng)建臨時文件,當執(zhí)行這些操作過程中mysqld發(fā)現(xiàn)磁盤空間滿了,就會把這個涉及到的表標記為crashed,刪掉臨時文件(除了 ALTER TABLE 操作,MySQL會放棄正在執(zhí)行的操作,刪除臨時文件,釋放磁盤空間)。
備注:當執(zhí)行這些命令過程中mysqld進程被意外被殺掉的話,其所生成臨時文件不會自動刪除,需要手工刪掉才能釋放磁盤空間。
mysqldump可以導出純sql文本,但是有些建表語句的參數(shù)名在高低版本中是不一樣的,
比如說在mysql4.*中的引擎指定用type,而mysql5.5的時候就用engine,
可以先把備份的sql文件先導到5.0左右的,會有警告,但是能導成功,然后再從5.0中導出sql文件,最后遷移到5.5的
建議是在數(shù)據(jù)遷移的時候版本差距別太大,有可能會出現(xiàn)版本兼容問題。
可以啊,你可以把不會關(guān)聯(lián)不大的數(shù)據(jù)分離開,比述說客戶數(shù)據(jù)跟物品數(shù)據(jù)分別部署在兩個數(shù)據(jù)庫中,這樣完全可以訪問啊。。。