看到此報錯心里有數(shù),mysql出現(xiàn)"the table is full"的問題,一般有兩個常見原因:
一個是使用MEMORY 存儲引擎時臨時表大小設(shè)置太小導(dǎo)致,一般調(diào)整MySQL的配置文件兩個參數(shù)重啟即可:
tmp_table_size
max_heap_table_size
但是看報錯日志中顯然很多業(yè)務(wù)表都不是memory存儲引擎而是innodb存儲引擎的,故排除此原因。
另一種原因便是硬盤空間滿了,清理硬盤即可。但是檢查數(shù)據(jù)目錄空間發(fā)現(xiàn)還有大量磁盤空間可用:
可以看出除了 ①磁盤空間滿;②超過文件系統(tǒng)限制;③超過innodb單表表空間限制之外,其余全是關(guān)于MyISAM存儲引擎和memory存儲引擎引起的原因。顯然這些都不符合我們現(xiàn)場的情況。
文檔提示當(dāng)磁盤空間還有較大盈余的時候,可能是ibdata1系統(tǒng)表空間文件無法繼續(xù)擴展導(dǎo)致,此時無論是因為設(shè)置原因還是文件系統(tǒng)限制原因都會在SQL層拋出the table XXX is full的異常,遂馬上檢查ibdata1文件:
發(fā)現(xiàn)系統(tǒng)表空間文件ibdata2 已經(jīng)5G ,達到最大限制了,迅速另行添加一個新的共享表空間文件,使數(shù)據(jù)庫恢復(fù)正常。
Ibdata1系統(tǒng)表空間在設(shè)置了innodb_file_per_table(建議設(shè)置)的情況下會儲存innodb表的元數(shù)據(jù)、change buffer、doublewrite buffer和undo log,如果多帶帶設(shè)置undo表空間的話,存儲內(nèi)容會更少,出現(xiàn)問題的頻率也很低,所以平時運維極易忽略ibdata1,在巡檢時也應(yīng)添加上對該表空間的檢查,自動擴展的值也應(yīng)依據(jù)業(yè)務(wù)進行合理設(shè)置。
參考文檔:
更多精彩干貨分享
點擊下方名片關(guān)注
IT那活兒
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/129893.html
摘要:常見錯誤分析與解決方法總結(jié)一翻譯不能連接到上的分析這說明計算機是存在的,但在這臺機器上卻沒提供服務(wù)。解決同樣對癥下藥,不同的原因不同的處理方法。九翻譯有一個語法錯誤在你的中分析論壇標(biāo)準(zhǔn)的程序是沒有語法錯誤的。表名,可以暫時解決問題。MySQL常見錯誤分析與解決方法總結(jié) 一、Cant connect to MySQL server on localhost (10061)翻譯:不能連接到 ...
閱讀 1459·2023-01-11 13:20
閱讀 1815·2023-01-11 13:20
閱讀 1267·2023-01-11 13:20
閱讀 2007·2023-01-11 13:20
閱讀 4227·2023-01-11 13:20
閱讀 2885·2023-01-11 13:20
閱讀 1489·2023-01-11 13:20
閱讀 3814·2023-01-11 13:20