日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

收缩Mysql的ibdata1文件大小方法

發布時間:2025/7/14 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 收缩Mysql的ibdata1文件大小方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

收縮Mysql的ibdata1文件大小方法

http://www.cnblogs.com/alibai/p/3650416.html

bdata1是mysql數據庫中一個數據文件了,你會發現它來越大了,下面我來介紹收縮Mysql的ibdata1文件大小方法

如果你有使用InnoDB來存儲你的Mysql表,使用默認設置應該會碰到個非常頭疼的問題,

在Mysql的數據目錄里有個默認只有10MB叫 ibdata1的文件沒日沒夜的增長讓你煩透了吧?

?

里面包含了InnoDB引擎存儲的所有索引和數據信息,很可惜Mysql在設計的時候就沒有收縮 InnoDB表的功能,

這就是為什么你在delete,truncate,drop這些表的時候這個文件大小沒有絲毫要減少的原因,而且你還沒辦法直觀的看到哪個數據庫占用了大量的ibdata1,

這個坑爹的問題在新版的Mysql中已經通過innodb_file_per_table這個選項來解決了,開啟該選項后,每個InnoDB表的索引和數據都會按*.ibd命名存儲到各個數據庫中,

但是這個選項默認是不開啟的。

如上所說,你沒法去收縮InnoDB數據文件,你也沒辦法在一臺沒有打開innodb_file_per_table選項的機器上直接加上該選項讓他工作,

你必須在安裝完Mysql就加上這個選項,或者按照本文介紹的三種方式來操作,無論你做任何操作,請確保你已經備份了整個數據庫目錄,也別忘了停 掉Mysql相關的一些服務。

前兩個方法需要獲取到Mysql數據庫實例中所有InnoDB的清單,如果你使用的是5.0以上的版本,

這一切都很容易:SELECT TABLE_SCHEMA,TABLE_NAME FROM TABLES WHERE ENGINE = ‘InnoDB’;

修改表引擎

1.對每個InnoDB表執行 ALTER TABLE table_name ENGINE=MyISAM;

2.停止Mysql服務;

3.移除InnoDB相關文件ibdata1等;

4.修改my.cnf中的參數,添加innodb_file_per_table;

5.啟動Mysql服務;

6.將剛才修改后的那些表改回InnoDB:ALTER TABLE table_name ENGINE=InnoDB;

導出InnoDB表 1.使用mysqldump命 令導出所有的InnoDB表,

例如: mysqldump –add-drop-table –extended-insert? –disable-keys –quick ‘db_name’ –tables ‘tbl_name’ > ‘db_name.tbl_name.sql’

2.刪掉這些表:

?SET FOREIGN_KEY_CHECKS=0; ?DROP TABLE db_name.tbl_name; ?DROP TABLE db_name1.tbl_name1; ?–– DROP other tables here… ?

SET FOREIGN_KEY_CHECKS=1;

3.停止Mysql服務;

4.移除InnoDB相關文件ibdata1等;

5.修改my.cnf中的參數,添加innodb_file_per_table;

6.啟動Mysql服務;

7.在Mysql Console下導入表: ?SET FOREIGN_KEY_CHECKS=0; ?SOURCE db_name.tbl_name.sql; ?SOURCE db_name1.tbl_name1.sql; ?

–– SOURCE other files here… ?SET FOREIGN_KEY_CHECKS=1;

導出整個數據庫

這個是我常用的,雖然他和耗磁盤和時間,但是確實是最簡便的:

1.導出所有的數據:

/usr/bin/mysqldump ––extended-insert ––all-databases? ––add-drop-database ––disable-keys ––flush-privileges ––quick ––routines? ––triggers > all-databases.sql

2.停止Mysql服務;

3.重命名mysql數據文件夾;

4.修改my.cnf中的參數,添加innodb_file_per_table;

5.mysql_install_db重新初始化mysqld;

6.開啟Mysql服務;

7.進入Mysql Console執行:

?SET FOREIGN_KEY_CHECKS=0; ?SOURCE all-databases.sql; ?SET FOREIGN_KEY_CHECKS=1;

8.重啟數據庫測試OK就領賞去吧。

原文來自:http://www.111cn.net/database/mysql/53013.htm?

你可能感興趣的文章
  • Mysql中查找并刪除重復數據的方法

轉載于:https://www.cnblogs.com/MYSQLZOUQI/p/3654644.html

總結

以上是生活随笔為你收集整理的收缩Mysql的ibdata1文件大小方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。