使用命令發現磁盤使用率爲100%了,還剩幾十兆。java
一系列神操做:mysql
備份數據庫,刪除實例、刪除數據庫表、重啓mysql服務.結果磁盤空間均爲釋放spring
網上查了不少資源,說要進行磁盤碎片化整理。緣由是datafree佔據的空間太多啦。具體能夠經過這個sql查看。sql
SELECT CONCAT(TRUNCATE(SUM(data_length)/1024/1024,2),'MB') AS data_size, CONCAT(TRUNCATE(SUM(max_data_length)/1024/1024,2),'MB') AS max_data_size, CONCAT(TRUNCATE(SUM(data_free)/1024/1024,2),'MB') AS data_free, CONCAT(TRUNCATE(SUM(index_length)/1024/1024,2),'MB') AS index_size FROM information_schema.tables WHERE TABLE_NAME = 'datainfo';
這個是後來的圖了,以前的圖沒有留,當時顯示一張表裏的data_free都達到了20個G。
數據庫
網上推薦的作法以下所示,對錶格進行碎片化整理。intellij-idea
ALTER TABLE datainfo ENGINE=InnoDB; ANALYZE TABLE datainfo; optimize table datainfo;
查看數據庫版本爲5.562不支持inodb,要麼選擇升級數據庫。正在這時,有個很差的消息發生了,那張表格給刪掉了,可是磁盤空間仍是沒有釋放啊。因此對錶進行碎片化整理的路也走不通了,由於表沒了。。。socket
後來的神操做:ide
一、使用命令查看mysql安裝的位置和配置文件所在的地方spring-boot
mysql 1118 945 0 14:28 ? 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
二、關閉mysql工具
service mysql stop
三、刪除datadir目錄下的ibdata一、ib_logfile0 ib_logfile1這些文件
四、 移動mysql的啓動參數
mv /etc/my.cnf ./abc
五、從新啓動mysql 發現磁盤空間釋放了
service mysql start
磁盤空間終於釋放了,下一步數據庫還原
一、採用navicate備份工具,進行數據庫備份
備份成功後生成了,生成psc文件。
200409141055.psc
二、新建一個數據庫實例,設置數據庫名和字符集
三、而後對備份數據庫進行還原,點擊還原
四、開始進行還原
第一次還原後發現還原後數據庫表建成功了,可是表裏面沒有數據。
後來網上查找資料發現是,遇到錯誤就中止了。因此更改了還原的配置,再次進行還原。
以前是這樣設置的
還原時當成一個事務進行了,遇到錯誤就中止了。
更改配置:
從新進行還原,數據庫裏的數據有了,而且驗證沒有問題。
mysql碎片化產生的緣由:
(1)表的存儲會出現碎片化,每當刪除了一行內容,該段空間就會變爲被留空,而在一段時間內的大量刪除操做,會使這種留空的空間變得比存儲列表內容所使用的空間更大;
(2)當執行插入操做時,MySQL會嘗試使用空白空間,但若是某個空白空間一直沒有被大小合適的數據佔用,仍然沒法將其完全佔用,就造成了碎片;
(3)當MySQL對數據進行掃描時,它掃描的對象實際是列表的容量需求上限,也就是數據被寫入的區域中處於峯值位置的部分;
清除碎片的優勢:
下降訪問表時的IO,提升mysql性能,釋放表空間下降磁盤空間使用率
注意:
1.MySQL官方建議不要常常(每小時或天天)進行碎片整理,通常根據實際狀況,只須要每週或者每個月整理一次便可(咱們如今是每個月凌晨4點清理mysql全部實例下的表碎片)。
2.在OPTIMIZE TABLE運行過程當中,MySQL會鎖定表。所以,這個操做必定要在網站訪問量較少的時間段進行。
3.清理student的105萬條數據, OPTIMIZE TABLE 庫.student;本地測試須要37秒。
自測:
你們能夠用這條語句看看本身的系統的datafree大不大
show table status from 表名;
原文發表於 TesterHome
地址:https://testerhome.com/topics/23049
近期熱文推薦:
1.Java 15 正式發佈, 14 個新特性,刷新你的認知!!
2.終於靠開源項目弄到 IntelliJ IDEA 激活碼了,真香!
3.我用 Java 8 寫了一段邏輯,同事直呼看不懂,你試試看。。
以爲不錯,別忘了隨手點贊+轉發哦!