mysql ibdata1是什麼文件 ibdata1文件太大可以刪除嗎?

ibdata1是什麼文件 ibdata1文件太大可以刪除嗎?做網站的都知道,數據庫一般用的是mysql數據庫,最近發現一個奇怪的事情,/www/server/data 裏面的ibdata1文件竟然有34G,難怪佔用這麼大空間,我又不敢直接刪掉,那要怎麼辦呢,下面分享我的處理過程。

  1:先備份全部數據庫文件。

  2:刪除原來的數據庫,或者刪除idbata1文件。

3:重新安裝新的數據庫,在導入之前備份的。

  mysql數據庫ibdata1文件可以刪除嗎?

  mysql數據庫,隨着使用時間越長, mysql數據庫目錄下的ibdata1文件就會越大,尤其是使用了Innodb引擎儲存數據,典型的就是wordpress博客系統。

直接刪除ibdata1文件會導致使用了Innodb引擎儲存的數據表全部丟失,並且無法恢復,如果需要刪除請一定先備份導出sql文件。

  MySQL ibdata1文件太大的解決辦法

  在MySQL數據庫中,如果不指定innodb_file_per_table=1參數單獨保存每個表的數據,MySQL的數據都會存放在ibdata1文件裏,時間久了這個文件就會變的非常大。

  下面是參考網上的一些資料,把數據分別保存在各數據庫子目錄裏的方法,這樣新產生的ibdata1文件就不會太大了。下面是在Ubuntu 14.04.12 x64,MySQL5.5上對ibdata1進行瘦身,操作過程的整理。

  1、備份數據庫中的數據。

  mysqldump -u root -p --extended-insert --all-databases --add-drop-database --disable-keys --flush-privileges --quick --routines --triggers > /home/all-database.sql

  //有的文檔用的是這樣的參數:mysqldump -q -uroot -p --add-drop-table --all-databases --events >/home/all-database.sql

  如果ibdata1上百GB,備份過程可能需要幾小時。

  2、停止MySQL服務。

  service mysql stop

  3、刪除ibdata1、ib_logfile*等文件

  mv ibdata1 ibdata1.20160419

  mv ib_logfile0 ib_logfile0.20160420

  mv ib_logfile1 ib_logfile1.20160420

  4、修改my.cnf配置文件

  vi /etc/mysql/my.cnf

  在[mysqld]子項下增加如下配置:

  innodb_file_per_table = 1

  5、刪除MySQL、performance_schema之外的所有數據庫

  cd /var/lib/mysql

  rm -rf zabbix

  服務器上只有Zabbix數據庫。

  6、重啓MySQL服務

  service mysql start

  ps -ef|grep mysql

  7、恢復數據(重新導入數據)

  mysql -u root -p

  Enter password:

  source /home/all-databaes.sql

  exit

  //有的文檔用這樣的命令格式:mysql -uroot -p < /home/all-database.sql

  Enter password:

  其中的/home/all-database.sql即爲第一步備份生成的文件,如果原來數據庫中數據較多,還原過程可能會持續較長時間,請耐心等待還原完成。如果超過30個小時還沒完成,可能要考慮中止恢復數據操作,先清除一部分table中的數據,從步驟1重新開始。如果table中記錄特多又可以全部刪除,用truncate 速度比較快。

  經過以上幾步後,可以看到新的ibdata1文件就只有幾十兆了,數據及索引都變成了針對單個表的小

  ibd文件了,它們在相應數據庫的文件夾下面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章