[转]MySql ibdata1文件太大如何缩小
From : http://blog.chinaunix.net/uid-24373487-id-4223322.html
原文地址:MySql ibdata1文件太大如何缩小 作者:emailwht
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
windows环境下可以:
mysqld --verbose --help > mysqlhelp.txt
notepad mysqlhelp.txt
在里面查找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)
mysql>
看看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文件太大导入失败解决办法总结
Mysql文件太大导入失败解决办法总结 在使用phpmyadmin导入数据库的时候可能会碰到由于数据库文件太大而无法导入的问题! 英文提示如下:File exceeds the maximum all ...
- Sqlserver2005日志文件太大,使其减小的方法
Sqlserver2005日志文件太大,使其减小的方法: 运行下面的三行 dbName为数据库名: backup log dbNamewith NO_LOG backup log dbNamewith ...
- 生成的API分析文件太大。我们无法在交付前验证您的API使用信息。这只是通知信息。
这次使用了APICloud平台来开发移动APP, 发布的时候在api控制台云编译成ipa后,这次使用apple提供的Application Loader工具提交apa文件到iTunes上去,提交结束的 ...
- ORACLE 监听日志文件太大停止写监听日志引起数据库连接不上问题
生产库监听日志文件太大(达到4G多),发现oracle停止写监听日志,检查参数log_file,log_directory,log_status 均正常,数据库运行也正常. 经确认确实为监听日志过大引 ...
- apache日志文件太大的问题
apache日志文件太大的问题 处理Apache日志的两种方法 rotatelogs 是 Apache 2.2 中自带的管道日志程序 rotatelogs [ -l ] logfile [ rotat ...
- jvm内存快照dump文件太大,怎么分析
1.场景 通常,使用eclipse的mat图形化工具打开dump的时候都会内存溢出. 对于比较小的dump,eclipse可以打开,但一旦dump文件太大,eclipse就有点束手无策. 这时候怎么办 ...
- 解决asp.net上传文件时文件太大导致的错误
即使在web.config中添加了节点和设置依然是不行的,还是报文件太大的错误, <httpModules> <add name="UploadHttpModu ...
- /var/adm/wtmp文件太大该怎么办?
/var/admin/wtmp文件记录所有用户的登陆信息,随着时间会增长到很大,/var/adm/wtmp文件太大该怎么办呢?先来看看/var/adm/wtmp文件的属性:testterm1:/#ls ...
- [办公自动化]PPT文件太大,如何压缩?
如果你经常需要制作PPT,文件太大的确是个问题. 那么应该如何压缩呢? 以office 2007为例 第一.可以选中图片,然后双击,在弹出的菜单栏中,选择压缩图片. 然后选择选项, 有三种比例可选,建 ...
随机推荐
- docker 获取容器id
docker ps -aqf 'name=pypaltform2018_v1_trust_pro'
- SpringBoot的Controller使用
一: 1.注解 2.control注解 3.效果 4.RespomseBody package com.caojun.springboot; import org.springframework.be ...
- 035 spark与hive的集成
一:介绍 1.在spark编译时支持hive 2.默认的db 当Spark在编译的时候给定了hive的支持参数,但是没有配置和hive的集成,此时默认使用hive自带的元数据管理:Derby数据库. ...
- redis 相关知识点
(1)什么是redis? Redis 是一个基于内存的高性能key-value数据库. (有空再补充,有理解错误或不足欢迎指正) (2)Reids的特点 Redis本质上是一个Key-Value类型的 ...
- 子类 父类强转 HttpServlet service实现
相当于 走父类 临时走了一趟 HttpServletRequest ->ServletRequets -> HttpServeltRequest /* */ public void ser ...
- JavaScript的计时器的工作原理
最近都在看一些JavaScript原理层面的文章,恰巧看到了jQuery的作者的一篇关于JavaScript计时器原理的解析,于是诚惶诚恐地决定把原文翻译成中文,一来是为了和大家分享,二来是为了加深自 ...
- Xtreme9.0 - Taco Stand 数学
Taco Stand 题目连接: https://www.hackerrank.com/contests/ieeextreme-challenges/challenges/taco-stand Des ...
- ios网络请求
1.AFNetworking object 2.Alamofire swift
- fritshoogland 大神ORACLE :pga-memory-operation latch
https://fritshoogland.wordpress.com/2017/03/01/oracle-12-2-wait-event-pga-memory-operation/#comment- ...
- RPM软件包管理的查询功能 转
RPM软件包管理的查询功能: 命令格式 rpm {-q|--query} [select-options] [query-options] RPM的查询功能是极为强大,是极为重要的功能之一:举几个常用 ...