【转】缩小mysql数据库的ibdata1文件
2016-01-25 16:31
519 查看
原文:http://hi.baidu.com/timework/blog/item/e07d25448cd41e2acefca321.html
ibdata1是mysql使用InnoDB引擎的时候需要使用的文件。这个文件有的时候会变得很大,并且在你删除数据的时候,文件也不减小。今天就碰到了一次,导致所有的/var分区都被占用光了。
下面是处理超大ibddata1文件的步骤:
1. 对每张表使用单独的innoDB文件, 修改/etc/my.cnf文件
[mysqld]
innodb_file_per_table
目的很明确,我们可以单独删除每个文件
2. 导出所有的数据,重建数据库,然后恢复数据:
# /usr/bin/mysqldump -R -q --all-databases > /temp/all.sql
# service mysqld stop
# rm -fr /var/lib/mysql/*
# /usr/bin/mysql_install_db
# service mysqld restart
# mysql < /tmp/all.sql
3. /var/lib/mysql的每个数据库下面,都有会很多的.ibd文件。这些分散的.ibd文件取代了原来的那个ibddata1。
以后删除数据库的时候,直接删除某个数据库的目录就可以了。
————-华丽的分隔符————-
mysql 使用的引擎:
mysql> show engines;
+------------+---------+----------------------------------------------------------------+
| Engine | Support | Comment |
+------------+---------+----------------------------------------------------------------+
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables |
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys |
| BerkeleyDB | YES | Supports transactions and page-level locking |
| BLACKHOLE | NO | /dev/null storage engine (anything you write to it disappears) |
| EXAMPLE | NO | Example storage engine |
| ARCHIVE | NO | Archive storage engine |
| CSV | NO | CSV storage engine |
| ndbcluster | NO | Clustered, fault-tolerant, memory-based tables |
| FEDERATED | NO | Federated MySQL storage engine |
| MRG_MYISAM | YES | Collection of identical MyISAM tables |
| ISAM | NO | Obsolete storage engine |
+------------+---------+----------------------------------------------------------------+
12 rows in set (0.00 sec)
For InnoDB tables, OPTIMIZE TABLE is mapped to ALTER TABLE, which rebuilds the table to update index statistics and free unused space in the clustered index.
所以不会直接来减少ibdata的文件尺寸。
减少ibdata的方法如下
- 1. 用mysqldump等工具导出数据 - 2. 停止 mysqld
- 3. 删除ibdata*, ib_logfile* 文件
- 4. 重新启动 mysqld(这时mysqld就会自动创建 idbdata*, ib_logfile* 文件)
- 5. 将到出来的数据导回去,体积才会减小。
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(908) | 评论(0) | 转发(0) |
0
上一篇:MySQL导库命令
下一篇:我的C++笔记
相关热门文章
ubuntu下idea的字体设置
mysqldump备份所有数据库,恢...
ORA-600(15599)错误
核心交易系统数据库应用程序绑...
开源负载均衡LVS随机自启动异...
python 多进程之管道实例(模...
解决mysql“Access denied for...
【原创】PostgreSQL 实现MySQL...
新做的mysql5.1中文手册...
mysql启动的四种方式
linux dhcp peizhi roc
关于Unix文件的软链接
求教这个命令什么意思,我是新...
sed -e "/grep/d" 是什么意思...
谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
ibdata1是mysql使用InnoDB引擎的时候需要使用的文件。这个文件有的时候会变得很大,并且在你删除数据的时候,文件也不减小。今天就碰到了一次,导致所有的/var分区都被占用光了。
下面是处理超大ibddata1文件的步骤:
1. 对每张表使用单独的innoDB文件, 修改/etc/my.cnf文件
[mysqld]
innodb_file_per_table
目的很明确,我们可以单独删除每个文件
2. 导出所有的数据,重建数据库,然后恢复数据:
# /usr/bin/mysqldump -R -q --all-databases > /temp/all.sql
# service mysqld stop
# rm -fr /var/lib/mysql/*
# /usr/bin/mysql_install_db
# service mysqld restart
# mysql < /tmp/all.sql
3. /var/lib/mysql的每个数据库下面,都有会很多的.ibd文件。这些分散的.ibd文件取代了原来的那个ibddata1。
以后删除数据库的时候,直接删除某个数据库的目录就可以了。
————-华丽的分隔符————-
mysql 使用的引擎:
mysql> show engines;
+------------+---------+----------------------------------------------------------------+
| Engine | Support | Comment |
+------------+---------+----------------------------------------------------------------+
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables |
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys |
| BerkeleyDB | YES | Supports transactions and page-level locking |
| BLACKHOLE | NO | /dev/null storage engine (anything you write to it disappears) |
| EXAMPLE | NO | Example storage engine |
| ARCHIVE | NO | Archive storage engine |
| CSV | NO | CSV storage engine |
| ndbcluster | NO | Clustered, fault-tolerant, memory-based tables |
| FEDERATED | NO | Federated MySQL storage engine |
| MRG_MYISAM | YES | Collection of identical MyISAM tables |
| ISAM | NO | Obsolete storage engine |
+------------+---------+----------------------------------------------------------------+
12 rows in set (0.00 sec)
For InnoDB tables, OPTIMIZE TABLE is mapped to ALTER TABLE, which rebuilds the table to update index statistics and free unused space in the clustered index.
所以不会直接来减少ibdata的文件尺寸。
减少ibdata的方法如下
- 1. 用mysqldump等工具导出数据 - 2. 停止 mysqld
- 3. 删除ibdata*, ib_logfile* 文件
- 4. 重新启动 mysqld(这时mysqld就会自动创建 idbdata*, ib_logfile* 文件)
- 5. 将到出来的数据导回去,体积才会减小。
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(908) | 评论(0) | 转发(0) |
0
上一篇:MySQL导库命令
下一篇:我的C++笔记
相关热门文章
ubuntu下idea的字体设置
mysqldump备份所有数据库,恢...
ORA-600(15599)错误
核心交易系统数据库应用程序绑...
开源负载均衡LVS随机自启动异...
python 多进程之管道实例(模...
解决mysql“Access denied for...
【原创】PostgreSQL 实现MySQL...
新做的mysql5.1中文手册...
mysql启动的四种方式
linux dhcp peizhi roc
关于Unix文件的软链接
求教这个命令什么意思,我是新...
sed -e "/grep/d" 是什么意思...
谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
相关文章推荐
- MySQL导库命令
- 【转】缩小mysql数据库的ibdata1文件
- MySQL老旧版本下载地址
- 【转】MySQL忘记root密码
- 【转】MySQL忘记root密码
- MySQL老旧版本下载地址
- 【转】mysql负载均衡的配置过程
- 【转】MySQL负载均衡功能实现概要
- 【转】MySQL命令大全
- 【转】MySQL命令大全
- 【转】MySQL负载均衡功能实现概要
- 【转】mysql负载均衡的配置过程
- mysql数据库破解密码
- mysql中的unix_timestamp函数
- MySQL 存储过程/游标/触发器/事务
- [MySQL]索引
- 高性能MySQL 第七章
- ERROR! MySQL server PID file could not be found!的解决方法
- mysql-proxy实现读写分离
- mysql-proxy实现读写分离