MySql ibdata1文件瘦身

转载 2015年11月19日 20:08:47

原文地址:MySql ibdata1文件太大如何缩小

MySql innodb如果是共享表空间,ibdata1文件越来越大,达到了30多个G,对一些没用的表进行清空:
truncate table xxx;
然后optimize table xxx; 没有效果
因为对共享表空间不起作用。
mysql ibdata1存放数据,索引等,是MYSQL的最主要的数据。
如果不把数据分开存放的话,这个文件的大小很容易就上了G,甚至几十G。对于某些应用来说,并不是太合适。因此要把此文件缩小。
无法自动收缩,必须数据导出,删除ibdata1,然后数据导入,比较麻烦,因此需要改为每个表单独的文件。
解决方法:数据文件单独存放(共享表空间如何改为每个表独立的表空间文件)。
步骤如下:

1)备份数据库
备份全部数据库,执行命令

#mysqldump -q -uroot -ppassword --add-drop-table --all-databases >/home/backup/all.sql

做完此步后,停止数据库服务。

#service mysqld stop

2)找到my.ini或my.cnf文件
linux下执行

# /usr/libexec/mysqld --verbose --help | grep -A 1 'Default options'
Default options are read from the following files in the given order:
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf 

在里面查找Default options,可以看到查找my.ini的顺序,以找到真实目录

3)修改mysql配置文件
打开my.ini或my.cnf文件
[mysqld]下增加下面配置

innodb_file_per_table=1

验证配置是否生效,可以重启mysql后,执行

#service mysqld restart
#mysql -uroot -ppassword
mysql> show variables like '%per_table%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    |
+-----------------------+-------+
1 row in set (0.00 sec)

看看innodb_file_per_table变量是否为ON

4)删除原数据文件
删除原来的ibdata1文件及日志文件ib_logfile*,删除/var/lib/mysql目录下的应用数据库文件夹(mysql文件夹不要删)

5)还原数据库
启动数据库服务
从命令行进入MySQL Server
还原全部数据库,执行命令

#service mysqld start
#mysql -uroot -pocs < /home/backup/all.sql 

经过以上几步后,可以看到新的ibdata1文件就只有几十M了,数据及索引都变成了针对单个表的小ibd文件了,它们在相应数据库的文件夹下面。

# ll
total 295028
drwx------  2 mysql mysql     36864 Apr 22 14:16 glpi
drwx------  2 mysql mysql     36864 Feb 15 13:45 glpi-1
-rw-rw----  1 mysql mysql  10485760 Apr 22 14:27 ibdata1
-rw-rw----. 1 mysql mysql 270532608 Apr 22 14:14 ibdata1-1
-rw-rw----  1 mysql mysql   5242880 Apr 22 14:27 ib_logfile0
-rw-rw----. 1 mysql mysql   5242880 Apr 22 14:14 ib_logfile0_bak
-rw-rw----  1 mysql mysql   5242880 Apr 22 14:28 ib_logfile1
-rw-rw----. 1 mysql mysql   5242880 Apr 21 22:50 ib_logfile1_bak
drwx------  2 mysql mysql      4096 Apr 22 14:16 mrbs
drwx------  2 mysql mysql      4096 Apr 14 12:05 mrbs-1
drwx------. 2 mysql mysql      4096 Apr 22 14:16 mysql
srwxrwxrwx  1 mysql mysql         0 Apr 22 14:16 mysql.sock
drwx------  2 mysql mysql     12288 Apr 22 14:16 ocsweb
drwx------  2 mysql mysql     12288 Nov 16  2011 ocsweb-1


# ll mrbs
total 808
-rw-rw---- 1 mysql mysql     61 Apr 22 14:16 db.opt
-rw-rw---- 1 mysql mysql  10492 Apr 22 14:16 mrbs_area.frm
-rw-rw---- 1 mysql mysql  98304 Apr 22 14:16 mrbs_area.ibd
-rw-rw---- 1 mysql mysql   9264 Apr 22 14:16 mrbs_entry.frm
-rw-rw---- 1 mysql mysql 131072 Apr 22 14:16 mrbs_entry.ibd
-rw-rw---- 1 mysql mysql   9442 Apr 22 14:16 mrbs_repeat.frm
-rw-rw---- 1 mysql mysql  98304 Apr 22 14:16 mrbs_repeat.ibd
-rw-rw---- 1 mysql mysql   8888 Apr 22 14:16 mrbs_room.frm
-rw-rw---- 1 mysql mysql 114688 Apr 22 14:16 mrbs_room.ibd
-rw-rw---- 1 mysql mysql   8688 Apr 22 14:16 mrbs_users.frm
-rw-rw---- 1 mysql mysql  98304 Apr 22 14:16 mrbs_users.ibd
-rw-rw---- 1 mysql mysql   8658 Apr 22 14:16 mrbs_variables.frm
-rw-rw---- 1 mysql mysql  98304 Apr 22 14:16 mrbs_variables.ibd
-rw-rw---- 1 mysql mysql   8738 Apr 22 14:16 mrbs_zoneinfo.frm
-rw-rw---- 1 mysql mysql  98304 Apr 22 14:16 mrbs_zoneinfo.ibd


# ll mrbs-1
total 88
-rw-rw---- 1 mysql mysql    61 Apr 14 12:05 db.opt
-rw-rw---- 1 mysql mysql 10492 Apr 14 12:05 mrbs_area.frm
-rw-rw---- 1 mysql mysql  9264 Apr 14 12:05 mrbs_entry.frm
-rw-rw---- 1 mysql mysql  9442 Apr 14 12:05 mrbs_repeat.frm
-rw-rw---- 1 mysql mysql  8888 Apr 14 12:05 mrbs_room.frm
-rw-rw---- 1 mysql mysql  8688 Apr 14 12:05 mrbs_users.frm
-rw-rw---- 1 mysql mysql  8658 Apr 14 12:05 mrbs_variables.frm
-rw-rw---- 1 mysql mysql  8738 Apr 14 12:05 mrbs_zoneinfo.frm

为MySQL数据文件ibdata1瘦身

前言 MySQL在运行一段时间后,ibdata1的文件会增长大小,就算删除了表的数据,ibdata1的体积也不会减小。由于硬盘空间有限,这样一直膨胀下去磁盘空间接近崩溃。今天在导出数据的时候就发...

mysql数据库ibdata1文件瘦身

遇到InnoDB的共享表空间文件ibdata1文件大小暴增时,应该如何处理? 1、问题背景 用MySQL/InnoDB的童鞋可能也会有过烦恼,不知道为什么原因,ibdata1文件莫名其...
  • a5nan
  • a5nan
  • 2017年06月07日 09:40
  • 183

[MySQL优化]为MySQL数据文件ibdata1瘦身

目录 系统环境 发现问题 解决问题 1. 系统环境 Linux Ubuntu 13.04 64bit server ~ uname -a Linux d2 3.8.0-21-g...

mysql 数据库备份及ibdata1的瘦身

理由: 同样是很重要的一篇文章 ============================================================================== 昨天做一大...
  • bjtang
  • bjtang
  • 2011年06月22日 14:03
  • 694

为什么 mysql 里的 ibdata1 文件不断的增长?

为什么 mysql 里的 ibdata1 文件不断的增长? 转自 https://linux.cn/article-5829-1.html ibdata1 file 我...

释放mysql ibdata1文件空间

一、今天做压力测试,导入了大量的数据,发现空间应用的很厉害,ibdata1这个文件占用空间很大,删除了一个大数据库,但是ibdata1的空间没有释放。 二、分析: ...

MySql ibdata1文件太大如何缩小

MySql ibdata1文件太大如何缩小  分类: Mysql/postgreSQL MySql ibdata1文件太大如何缩小   MySql innodb如果是共...

mysql data文件夹下的ibdata1 文件作用

ibdata1是储存的格式,INNODB类型数据状态下,ibdata用来储存文件的数据,而库名的文件夹里面的那些表文件只是结构而已。 由于mysql4.1默认试innodb,所以这个文件默认就存...

如何收缩Mysql的ibdata1文件

ibdata1是mysql数据库中一个数据文件了,你会发现它来越大了,下面我来介绍收缩Mysql的ibdata1文件大小方法。 如果你有使用InnoDB来存储你的Mysql表,使用默认设置应该会碰...

如何收缩Mysql的ibdata1文件

http://blog.csdn.net/jiangguilong2000/article/details/46869359 ibdata1是mysql数据库中一个数据文件了,你会发现它来越...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySql ibdata1文件瘦身
举报原因:
原因补充:

(最多只允许输入30个字)