博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySql ibdata1文件瘦身
阅读量:6848 次
发布时间:2019-06-26

本文共 3581 字,大约阅读时间需要 11 分钟。

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 -ppasswordmysql> 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文件了,它们在相应数据库的文件夹下面。

# lltotal 295028drwx------  2 mysql mysql     36864 Apr 22 14:16 glpidrwx------  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_bakdrwx------  2 mysql mysql      4096 Apr 22 14:16 mrbsdrwx------  2 mysql mysql      4096 Apr 14 12:05 mrbs-1drwx------. 2 mysql mysql      4096 Apr 22 14:16 mysqlsrwxrwxrwx  1 mysql mysql         0 Apr 22 14:16 mysql.sockdrwx------  2 mysql mysql     12288 Apr 22 14:16 ocswebdrwx------  2 mysql mysql     12288 Nov 16  2011 ocsweb-1# ll mrbstotal 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-1total 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

转载地址:http://xelul.baihongyu.com/

你可能感兴趣的文章
小白学python系列-(1)环境的安装
查看>>
eclipse 快捷键
查看>>
exchange 2016 EMS控制台报错Winrm HTTP 403
查看>>
java_vuser脚本编写httppost方式发送stream进行接口测试
查看>>
我的友情链接
查看>>
Java调用.NET webservice方法的几种方式
查看>>
Swoole 实例三(Timer定时器)
查看>>
Hyper-V Server 2008 R2安装、配置
查看>>
MYSQL-字符校对规则探究
查看>>
HTTPClient模拟登陆21CN
查看>>
Golang 用指定网卡的IP发送HTTP请求
查看>>
网站安全狗IIS版 V4.0.15586 发布
查看>>
Docker存储驱动之AUFS简介
查看>>
Java中如何封装自己的类,建立并使用自己的类库?
查看>>
Java Http请求工具类
查看>>
iscsi集群搭建
查看>>
Flutter Web - 目标全平台开发的Flutter再下一城!
查看>>
Nginx代理Tomcat
查看>>
Apache与Tomcat的区别
查看>>
mysql—Access denied for user 'root'@'localhost' (using password:NO)
查看>>