如何收縮Mysql的ibdata1檔案

2021-07-03 19:13:06 字數 2036 閱讀 9024

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

如上所說,你沒法去收縮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;

在my.cnf中[mysqld]下設定

innodb_file_per_table=1

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就領賞去吧。

如果因為斷電或者直接關機導致idb檔案出錯,就需要重構這些檔案

[mysqld]

加 innodb_force_recovery=1

mysql如何收縮表空間

引數 innodb file per table mysql5.6.6版本以後,預設設定為on,表示innodb表資料儲存在乙個以.ibd為字尾的檔案中 不建議設定為off,原因是 設定為off後,會將表資料儲存在系統共享表空間中,即使drop掉表,空間也不會被 磁碟空間不會減少,只會無腦增加 資料...

mysql收縮空間 Oracle表空間收縮方案

對於表空間收縮,oracle只提供擴大的功能,而不提供收縮。所以,要實現這樣的要求,就只能先建立乙個中間表空間,然後將待收縮表 應用背景 某些情況下,由於前期設計上沒有考慮全面,導致表空間預建太大,遠遠超出實際使用大小。於是,就出現了收縮表空間這樣的需求,即將這個表空間的占用空間進行收縮。處理方案 ...

如何收縮Mysql的ibdata1檔案

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