收縮Mysql的ibdata1檔案大小方法

2021-09-08 10:11:20 字數 2125 閱讀 8226

bdata1是mysql資料庫中乙個資料檔案了,你會發現它來越大了,下面我來介紹收縮mysql的ibdata1檔案大小方法

在mysql的資料目錄裡有個預設只有10mb叫 ibdata1的檔案沒日沒夜的增長讓你煩透了吧?

裡面包含了innodb引擎儲存的所有索引和資料資訊,很可惜mysql在設計的時候就沒有收縮 innodb表的功能,

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

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

但是這個選項預設是不開啟的。

如上所說,你沒法去收縮innodb資料檔案,你也沒辦法在一台沒有開啟innodb_file_per_table選項的機器上直接加上該選項讓他工作,

前兩個方法需要獲取到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就領賞去吧。

你可能感興趣的文章

如何收縮Mysql的ibdata1檔案

ibdata1是mysql資料庫中乙個資料檔案了,你會發現它來越大了,下面我來介紹收縮mysql的ibdata1檔案大小方法。如上所說,你沒法去收縮innodb資料檔案,你也沒辦法在一台沒有開啟innodb file per table選項的機器上直接加上該選項讓他工作,你必須在安裝完mysql就加...

如何收縮Mysql的ibdata1檔案

ibdata1是mysql 資料庫中乙個資料檔案了,你會發現它來越大了,下面我來介紹收縮mysql的ibdata1檔案大小方法。如上所說,你沒法去收縮innodb資料檔案,你也沒辦法在一台沒有開啟innodb file per table選項的機器上直接加上該選項讓他工作,你必須在安裝完mysql就...

收縮Mysql的ibdata1檔案大小方法

bdata1是mysql資料庫中乙個資料檔案了,你會發現它來越大了,下面我來介紹收縮mysql的ibdata1檔案大小方法 如上所說,你沒法去收縮innodb資料檔案,你也沒辦法在一台沒有開啟innodb file per table選項的機器上直接加上該選項讓 他工作,你必須在安裝完mysql就加...