MySQL之InnoDB之更换表空间


今天在迁移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独立表空间的配置

  • 1
  • 2
  • 下一页

相关内容