<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如果mysql磁盤滿了,會發(fā)生什么?還真被我遇到了!

          共 2741字,需瀏覽 6分鐘

           ·

          2022-07-23 16:43

          點擊上方藍色字體,選擇“設(shè)為星標”

          回復”666“獲取面試寶典

          使用命令發(fā)現(xiàn)磁盤使用率為100%了,還剩幾十兆。

          一系列神操作

          備份數(shù)據(jù)庫,刪除實例、刪除數(shù)據(jù)庫表、重啟mysql服務(wù),結(jié)果磁盤空間均沒有釋放。

          怎么辦

          網(wǎng)上查了很多資源,說要進行磁盤碎片化整理。原因是datafree占據(jù)的空間太多啦。具體可以通過這個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。

          網(wǎng)上推薦的做法如下所示,對表格進行碎片化整理。

          ALTER TABLE datainfo ENGINE=InnoDB;
          ANALYZE TABLE datainfo;

          optimize table datainfo;

          僵局:

          查看數(shù)據(jù)庫版本為5.562不支持inodb,要么選擇升級數(shù)據(jù)庫。正在這時,有個不好的消息發(fā)生了,那張表格給刪掉了,但是磁盤空間還是沒有釋放啊。所以對表進行碎片化整理的路也走不通了,因為表沒了。。。

          后來的神操作

          1、使用命令查看mysql安裝的位置和配置文件所在的地方

          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

          2、關(guān)閉mysql

          service mysql stop  

          3、刪除datadir目錄下的ibdata1、ib_logfile0 ib_logfile1這些文件

          4、 移動mysql的啟動參數(shù)

          mv /etc/my.cnf ./abc

          5、重新啟動mysql 發(fā)現(xiàn)磁盤空間釋放了 service mysql start

          磁盤空間終于釋放了

          下一步數(shù)據(jù)庫還原

          1、采用navicate備份工具,進行數(shù)據(jù)庫備份

          備份成功后生成了,生成psc文件。200409141055.psc

          2、新建一個數(shù)據(jù)庫實例,設(shè)置數(shù)據(jù)庫名和字符集

          3、然后對備份數(shù)據(jù)庫進行還原,點擊還原

          4、開始進行還原 第一次還原后發(fā)現(xiàn)還原后數(shù)據(jù)庫表建成功了,但是表里面沒有數(shù)據(jù)。后來網(wǎng)上查找資料發(fā)現(xiàn)是,遇到錯誤就停止了。所以更改了還原的配置,再次進行還原。之前是這樣設(shè)置的

          還原時當成一個事務(wù)進行了,遇到錯誤就停止了。更改配置重新進行還原,數(shù)據(jù)庫里的數(shù)據(jù)有了,并且驗證沒有問題。

          問題解決

          mysql碎片化產(chǎn)生的原因

          (1)表的存儲會出現(xiàn)碎片化,每當刪除了一行內(nèi)容,該段空間就會變?yōu)楸涣艨眨谝欢螘r間內(nèi)的大量刪除操作,會使這種留空的空間變得比存儲列表內(nèi)容所使用的空間更大;

          (2)當執(zhí)行插入操作時,MySQL會嘗試使用空白空間,但如果某個空白空間一直沒有被大小合適的數(shù)據(jù)占用,仍然無法將其徹底占用,就形成了碎片;

          (3)當MySQL對數(shù)據(jù)進行掃描時,它掃描的對象實際是列表的容量需求上限,也就是數(shù)據(jù)被寫入的區(qū)域中處于峰值位置的部分;

          清除碎片的優(yōu)點:

          降低訪問表時的IO,提高mysql性能,釋放表空間降低磁盤空間使用率

          注意

          1.MySQL官方建議不要經(jīng)常(每小時或每天)進行碎片整理,一般根據(jù)實際情況,只需要每周或者每月整理一次即可(我們現(xiàn)在是每月凌晨4點清理mysql所有實例下的表碎片)。

          2.在OPTIMIZE TABLE運行過程中,MySQL會鎖定表。因此,這個操作一定要在網(wǎng)站訪問量較少的時間段進行。

          3.清理student的105萬條數(shù)據(jù), OPTIMIZE TABLE 庫.student;本地測試需要37秒。

          自測

          大家可以用這條語句看看自己的系統(tǒng)的datafree大不大 show table status from 表名;

          來源 | https://urlify.cn/jemaym

          PS:如果覺得我的分享不錯,歡迎大家隨手點贊、在看。

           關(guān)注公眾號:Java后端編程,回復下面關(guān)鍵字 


          要Java學習完整路線,回復  路線 

          缺Java入門視頻,回復 視頻 

          要Java面試經(jīng)驗,回復  面試 

          缺Java項目,回復: 項目 

          進Java粉絲群: 加群 


          PS:如果覺得我的分享不錯,歡迎大家隨手點贊、在看。

          (完)




          加我"微信獲取一份 最新Java面試題資料

          請備注:666不然不通過~


          最近好文


          1、堪稱神級的Spring Boot手冊,從基礎(chǔ)入門到實戰(zhàn)進階

          2、SQL優(yōu)化萬能公式:5 大步驟 + 10 個案例

          3、Java面試中如何介紹自己的項目經(jīng)驗?

          4、一個基于Spring Boot+Vue+Redis的物聯(lián)網(wǎng)智能家居系統(tǒng)

          5、公司用了 6 年的Spring Boot 部署方案!



          最近面試BAT,整理一份面試資料Java面試BAT通關(guān)手冊,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。
          獲取方式:關(guān)注公眾號并回復 java 領(lǐng)取,更多內(nèi)容陸續(xù)奉上。
          明天見(??ω??)
          瀏覽 34
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人无码豆花 | 国产三级日韩三级欧美三级 | 天天撸一撸在线免费观看 | 日韩毛片一区二区 | 操鸡吧高清无码长视频网站 |