mysql 表ful,你所不知的table is full那些事

當我們要寫入新數據而發生“The table is full”告警錯誤時,先不要著急,按照下面的思路來逐步分析即可:

1、查看操作系統以及MySQL的錯誤日志文件

確認操作系統的文件系統沒有報錯,并且MySQL的錯誤日志文件中是否有一些最直觀的可見的錯誤提示。

有可能是數據庫文件超過操作系統層的文件大小限制,比如fat/fat32以及低版本的Linux,文件最大不可以大于2G(最大擴展到4G),這就需要轉換fat32為NTFS,或升級Linux版本。

2、確認磁盤空間沒有滿

執行 df -h 查看剩余磁盤空間,如果發現磁盤空間確實已經用完,則盡快刪除不需要的文件。

如果通過 du 計算各個目錄的總和卻發現根本不會用完磁盤空間時,就需要注意了,可能是某個被刪除的文件還沒完全釋放,導致 df 看起來已經用完,但 du 卻又統計不到。

這時候可以執行 lsof | grep -i deleted 找到被刪除的大文件,將其對應的進程殺掉,釋放該文件描述符。

如果該進程不能被殺掉,例如是 mysqld 進程在占用的話,可以在 MySQL 里找到是哪個內部線程在用,停止該線程即可。

曾經發生過這樣一個例子:

用vim打開MySQL的slow query log,退出時選擇了 “wq” 指令,也就是保存退出,結果悲劇發生了。

因為在其打開的那段時間內,slow query log有新日志產生,會持續寫入,但他退出時采用保存退出的方式,變成了一個“新”文件(或者說新文件句柄 file handler),這個“新”文件無法被mysqld進程識別,

mysqld進程依舊將slow query log寫入到原來它打開的那個文件(或者說文件句柄)里,該日志文件在持續增長,但手工保存退出的文件卻再也不增長了,直接查看文件看不出任何異常。

這時候只能用 lsof -p `pidof mysqld` 才能看到該文件。

解決方法很簡單,將原來的文件備份一下,執行下面的指令:

FLUSH SLOW LOGS;

備注:MySQL 5.5開始才支持 BINARY/ENGINE/ERROR/GENERAL/RELAY/SLOW 等關鍵字,之前的版本只能刷新全部日志。

3、確認數據表狀態

如果是MyISAM引擎

默認配置下,MyISAM引擎最大可支持256TB(myisam_data_pointer_size = 6,256^6 = 256TB),除非操作系統層有限制。

在MySQL5.0中,MyISAM引擎行記錄默認是動態長度,單表最大可達256TB,MyISAM行指針(myisam_data_pointer_size)長度為6字節。

在這之前,MyISAM行指針默認長度為4字節,只支持4GB的數據。改行指針最大值可設為8字節。

在行指針設置較小不夠用的時候,為提高MyISAM表最大容量,可以修改表定義設定MAX_ROWS的值:ALTER TABLE `xx` ENGINE=MyISAM MAX_ROWS=nn

備注:表定義中,AVG_ROW_LENGTH 屬性定義的是 BLOB/TEXT 字段類型的最大長度。

如果是InnoDB引擎

ibdata*共享表空間最后一個文件沒有設置成自增長,或者超過32位系統的單文件大小限制。

解決方法:

1、ibdata*的最后一個文件(非最后一個文件無法設置為自動增長)設置成自動增長;

2、檢查操作系統,遷移到64位操作系統下;

3、轉成獨立表空間;

4、刪除歷史數據,重整表空間;

如果是MEMORY引擎

1、適當提高max_heap_table_size設置(注意該值是會話級別,不要設置過大,例如1GB,一般不建議超過256MB);

2、執行ALTER TABLE t_mem ENGINE=MEMORY; 重整表空間,否則無法寫入新數據;

3、刪除部分歷史數據或者直接清空,重整表空間;

4、設置 big_tables = 1,將所有臨時表存儲在磁盤,而非內存中,缺點是如果某個SQL執行時需要用到臨時表,則性能會差很多;

順便說下,如果數據表有一列自增INT做主鍵,但是該ID值達到了INT最大值的話,MyISAM、MEMORY、InnoDB三種引擎的告警信息是不一樣的。

InnoDB引擎的告警信息類似這樣:

ERROR 1467 (HY000): Failed to read auto-increment value from storage engine

而MyISAM和MEMORY引擎則都是這樣:

ERROR 1062 (23000): Duplicate entry ’4294967295′ for key ‘PRIMARY’

參考

覺得文章有用?立即:

和朋友一起 共學習 共進步!

猜想失敗,您看看下面的文章有用嗎?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396221.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396221.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396221.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Calendar、Date、long類型的時間,三者之間如何轉化

1. Calendar類型轉化為Date類型和long類型 Calendar calendarCalendar.getInstance(); Date datecalendar.getTime(); long timecalendar.getTimeInMillis(); 2.Date類型轉化為Calendar類型和long類型 Date datenew Date(System.currentTimeMillis()100000000); Calendar calen…

sit是什么環境_軟件環境常識 --dev sit uat

DEV環境:DEV顧名思義就是develop,即代碼開發的環境。SIT環境:System Integration Test系統集成測試,開發人員自己測試流程是否走通。UAT環境:User Acceptance Test用戶驗收測試,由專門的測試人員驗證&#…

python基礎數據類型的相關知識點

1、字符串的函數join >>> s "Hello" >>> s1 s.join("你好")#將字符串Hello插入到你好中 >>> s1 你Hello好 >>> s2 "Tanxu".join("你好嗎")#將字符串Tanxu插入到你好嗎中 >>> s2 你Ta…

(轉載)JDOM/XPATH編程指南

JDOM/XPATH編程指南 本文分別介紹了 JDOM 和 XPATH,以及結合兩者進行 XML 編程帶來的好處。 前言 XML是一種優秀的數據打包和數據交換的形式,在當今XML大行于天下,如果沒有聽說過它的大名,那可真是孤陋寡聞了。用XML描述數據的優勢…

谷歌跟oracle_誰贏得了Google VS Oracle? 開發人員贏了。

谷歌跟oracleGoogle has successfully defended itself from a $9 billion lawsuit from Oracle. In doing so, Google’s lawyers have prevented a dangerous precedent that would have given old copyright-hoarding tech companies a way to sue lots of startups and ope…

php上下屬對應關系,由主分類 ID 取出(多個)下級子分類所對應的項,有沒有什么好的辦法?(其實似乎和 PHP 沒什么直接關系?)...

有一個表結構比如:項目:項目ID項目名分類ID...還有一個多級分類結構:分類1 分類1.1 分類1.1.1 分類1.1.1.1 分類1.1.1.2 分類1.2分類2...假定我現在有分類1的序號,現在想通過這個序號取出對應分類1及其子項中的所有項目的列表&…

最長無重復字符子串?

2019獨角獸企業重金招聘Python工程師標準>>> 題目要求: 給定一個字符串S,在該字符串中找到一個最長的沒有重復字符的子串。 轉載于:https://my.oschina.net/datacube/blog/875545

history of Program

1951 – Regional Assembly Language  1952 – Autocode  1954 – IPL (LISP語言的祖先)  1955 – FLOW-MATIC (COBOL語言的祖先)  1957 – FORTRAN (第一個編譯型語言) 1957 – COMTRAN (COBOL語言的祖先)  1958 – LISP  1958 – ALGOL 58  1959 – FACT (COBO…

銷售探討_讓我們一起探討編程資源的領域

銷售探討by Quincy Larson昆西拉爾森(Quincy Larson) 讓我們一起探討編程資源的領域 (Let’s explore the universe of programming resources together) 有很多免費的編程資源。 (There are a lot of free programming resources out there.) Here’s a list of more than a …

利用yii2 gridview實現批量刪除案例

作者:白狼 出處:http://www.manks.top/article/yii2_gridview_deleteall本文版權歸作者,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。 今天仍…

php中tp框架的坑,tp5框架遇到的一些坑

最近這個項目確實是問題多多!新項目的上線到測試,基本都是一個人去弄!面對40多萬條的數據,mysql跑起來確實沒有那么快!首先來介紹一下我的項目吧!其實項目比較簡單 主要就是在已有的平臺開放類似于百家號&…

BZOJ 4811 樹鏈剖分+線段樹

思路: 感覺這題也可神了.. (還是我太弱) 首先發現每一位不會互相影響,可以把每一位分開考慮,然后用樹鏈剖分或者LCT維護這個樹 修改直接修改,詢問的時候算出來每一位填0,1經過這條鏈的變換之后得…

selenium框架安裝及webdriver安裝

本文介紹的是selenium安裝及webdriver安裝、小實例 1、selenium介紹 selenium是一個用于web應用程序測試的工具。 Selenium測試直接運行在瀏覽器,就向真正的用戶操作一樣。 支持的瀏覽器包括IE(7,8,9,10,11),Mazilla Firefox,Safari,Google Chrome,OperaL瀏覽器 這個…

idead斷點調試_IDEA---斷點調試Debug

Debug調試程序:可以讓代碼逐行執行,查看代碼執行的過程,調試程序中出現的bug使用方式:在行號的右邊,鼠標左鍵單擊,添加斷點(每個方法的第一行,哪里有bug添加到哪里)右鍵,選擇Debug執行程序程序就會停留在添加的第一個斷點處執行程序:f8:逐行執行程序f7:進入到方法中shiftf8:跳出…

svd medium_我們剛剛放棄了Medium博客。 您可能也應該這樣做。

svd mediumOur blog helped our open source community reach an early critical mass.我們的博客幫助我們的開源社區達到了早期的臨界質量。 In the 18 months since we launched our blog, it’s been viewed half a million times.自我們發布博客以來的18個月里&#xff0c…

寫文件 追加和換行

file_put_contents("log.txt", "Hello world everyone.".PHP_EOL, FILE_APPEND); 轉載于:https://www.cnblogs.com/yixi978/p/5422504.html

突然想到了王自如

剛剛不知道為什么突然想到了王自如。可能是因為下午在騰訊視頻首頁看到了老羅羅永浩的一個訪談節目,然后神經元一短路的原因吧。 想到王自如不禁又聯想到了王自如和羅永浩的那場著名的撕逼之戰。場面上王自如是被羅老師教做人的一個結果。然后就很長時間沒有聽到關于…

UOJ Test Round 3

A.幾何沖刺 感覺自己的智商爆炸。 顯然是按照極角序排列之后依次加點&#xff0c;判斷是否有點。 保證一個點在兩個角的范圍內就OK了啊&#xff0c;想了半天叉積。。。 #include "triangles.h" #include <bits/stdc.h> #define for1(a,b,i) for(int ia,end_b;i…

萬能素材庫_自媒體運營必備3款黑科技工具,一個萬能素材網站,你都在用嗎?...

原標題&#xff1a;自媒體運營必備3款黑科技工具&#xff0c;一個萬能素材網站&#xff0c;你都在用嗎&#xff1f;現在刷短視頻幾乎是我們每個人每天必做的一個娛樂方式了&#xff0c;也有很多的小伙伴加到我問&#xff0c;怎么做抖音&#xff0c;抖音怎么運營&#xff0c;那么…

java怎么處理ajax請求,java怎么用ajax請求?jquery ajax請求后臺的簡單例子

jQuery.ajax(url,[settings])概述通過 HTTP 請求加載遠程數據。jQuery 底層 AJAX 實現。簡單易用的高層實現見 $.get, $.post 等。$.ajax() 返回其創建的 XMLHttpRequest 對象。大多數情況下你無需直接操作該函數&#xff0c;除非你需要操作不常用的選項&#xff0c;以獲得更多…