今天在遷移zabbix資料庫時碰到一個共用資料表空間無法釋放的問題,由於mysql預設使用的是innodb儲存引擎,當刪除一個很大的資料時,由於強制中斷操作造成共用資料表空間不能釋放,同時需要刪除的資料庫也無法刪除掉,這樣,共用資料表空間裡仍存有未被完全刪除的資料庫的資訊。從而造成資料表空間無法釋放的問題。
當我們想釋放或更換共用資料表空間時正確的步驟如下:
重新設定共用資料表空間
1.查看當前存在的資料庫
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
| zhujiangtao |
+--------------------+
4 rows in set (0.00 sec)
2.備份那些儲存引擎是innodb的資料庫,當然若有其他的資料庫,也需要備份,只是本文是針對innodb儲存引擎而言的。
[root@zhu2 var]# mysqldump zhujiangtao > /tmp/zhu.sql #根據需要可對mysqldump使用具體的參數
3.關閉mysql資料庫
[root@zhu2 ~]# service mysqld stop
Shutting down MySQL.. [確定]
4.刪除innodb儲存引擎的共用資料表空間和記錄檔以及使用innodb儲存引擎的表的.frm檔案
[root@zhu2 var]# ll /opt/mysql/var/
總計 45880
-rw-rw---- 1 mysql mysql 35651584 10-18 00:51 ibdata1
-rw-rw---- 1 mysql mysql 5242880 10-18 00:51 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 10-18 00:51 ib_logfile1
[root@zhu2 var]# rm -rf ibdata1 #刪除資料表空間
[root@zhu2 var]# rm -rf ib_logfile* #刪除記錄檔
[root@zhu2 var]# rm -rf zhujaingtao/student.frm #刪除innodb表的.frm
檔案
5.重新設定共用資料表空間
innodb_data_file_path = ibdata1:100M:autoextend
更多詳情見請繼續閱讀下一頁的精彩內容:
推薦閱讀:
InnoDB儲存引擎的啟動、關閉與恢複
MySQL InnoDB獨立資料表空間的配置
MySQL Server 層和 InnoDB 引擎層 體繫結構圖
InnoDB 死結案例解析
MySQL Innodb獨立資料表空間的配置