收缩Mysql的ibdata1文件大小方法

http://www.cnblogs.com/alibai/p/3650416.html

bdata1是mysql数据库中一个数据文件了,你会发现它来越大了,下面我来介绍收缩Mysql的ibdata1文件大小方法

如果你有使用InnoDB来存储你的Mysql表,使用默认设置应该会碰到个非常头疼的问题,

在Mysql的数据目录里有个默认只有10MB叫 ibdata1的文件没日没夜的增长让你烦透了吧?

里面包含了InnoDB引擎存储的所有索引和数据信息,很可惜Mysql在设计的时候就没有收缩 InnoDB表的功能,

这就是为什么你在delete,truncate,drop这些表的时候这个文件大小没有丝毫要减少的原因,而且你还没办法直观的看到哪个数据库占用了大量的ibdata1,

这个坑爹的问题在新版的Mysql中已经通过innodb_file_per_table这个选项来解决了,开启该选项后,每个InnoDB表的索引和数据都会按*.ibd命名存储到各个数据库中,

但是这个选项默认是不开启的。

如上所说,你没法去收缩InnoDB数据文件,你也没办法在一台没有打开innodb_file_per_table选项的机器上直接加上该选项让他工作,

你必须在安装完Mysql就加上这个选项,或者按照本文介绍的三种方式来操作,无论你做任何操作,请确保你已经备份了整个数据库目录,也别忘了停 掉Mysql相关的一些服务。

前两个方法需要获取到Mysql数据库实例中所有InnoDB的清单,如果你使用的是5.0以上的版本,

这一切都很容易:SELECT TABLE_SCHEMA,TABLE_NAME FROM TABLES WHERE ENGINE = ‘InnoDB’;

修改表引擎

1.对每个InnoDB表执行 ALTER TABLE table_name ENGINE=MyISAM;

2.停止Mysql服务;

3.移除InnoDB相关文件ibdata1等;

4.修改my.cnf中的参数,添加innodb_file_per_table;

5.启动Mysql服务;

6.将刚才修改后的那些表改回InnoDB:ALTER TABLE table_name ENGINE=InnoDB;

导出InnoDB表 1.使用mysqldump命 令导出所有的InnoDB表,

例如: mysqldump –add-drop-table –extended-insert  –disable-keys –quick ‘db_name’ –tables ‘tbl_name’ > ‘db_name.tbl_name.sql’

2.删掉这些表:

◦SET FOREIGN_KEY_CHECKS=0; ◦DROP TABLE db_name.tbl_name; ◦DROP TABLE db_name1.tbl_name1; ◦–– DROP other tables here… ◦

SET FOREIGN_KEY_CHECKS=1;

3.停止Mysql服务;

4.移除InnoDB相关文件ibdata1等;

5.修改my.cnf中的参数,添加innodb_file_per_table;

6.启动Mysql服务;

7.在Mysql Console下导入表: ◦SET FOREIGN_KEY_CHECKS=0; ◦SOURCE db_name.tbl_name.sql; ◦SOURCE db_name1.tbl_name1.sql; ◦

–– SOURCE other files here… ◦SET FOREIGN_KEY_CHECKS=1;

导出整个数据库

这个是我常用的,虽然他和耗磁盘和时间,但是确实是最简便的:

1.导出所有的数据:

/usr/bin/mysqldump ––extended-insert ––all-databases  ––add-drop-database ––disable-keys ––flush-privileges ––quick ––routines  ––triggers > all-databases.sql

2.停止Mysql服务;

3.重命名mysql数据文件夹;

4.修改my.cnf中的参数,添加innodb_file_per_table;

5.mysql_install_db重新初始化mysqld;

6.开启Mysql服务;

7.进入Mysql Console执行:

◦SET FOREIGN_KEY_CHECKS=0; ◦SOURCE all-databases.sql; ◦SET FOREIGN_KEY_CHECKS=1;

8.重启数据库测试OK就领赏去吧。

原文来自:http://www.111cn.net/database/mysql/53013.htm

你可能感兴趣的文章
  • Mysql中查找并删除重复数据的方法

转载于:https://www.cnblogs.com/MYSQLZOUQI/p/3654644.html

收缩Mysql的ibdata1文件大小方法相关推荐

  1. mysql初始化ibdata1大小_MySQL问答系列之如何避免ibdata1文件大小暴涨

    0.导读 ibdata1文件是什么? ibdata1是一个用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据.撤销记录.修改buffer和双写buffer.如果file-per ...

  2. mysql 误删除ibdata1,mysql误删除ibdata1之后的恢复方法

    环境模拟: 1.删除掉数据目录下,ib*文件: [root@jj-svn160_231 data]# rm -rf ib* 2.登录数据库插入数据:[发现数据可以正常插入] mysql> use ...

  3. mysql 误删除ibdata1,MySQL 误删除ibdata1之后的恢复方法

    这篇文章主要为大家详细介绍了MySQL 误删除ibdata1之后的恢复方法,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编小韵来看看吧! mysql 误删除ibd ...

  4. MySQL的ibdata1详解

    关于 MySQL 的 ibdata1 文件的这个问题: 当监控服务器发送一个关于 MySQL 服务器存储的报警时,恐慌就开始了 -- 就是说磁盘快要满了. 一番调查后你意识到大多数地盘空间被 Inno ...

  5. MySQL数据库多种安装方法及企业级安装实践

    本文来自老男孩老师第三本书籍著作<老男孩的MySQL私房菜>第三章内容分享! 3.1 MySQL数据库的安装方法及选择 在当今的互联网企业里,MySQL数据库大多运行在Linux系列操作系 ...

  6. 无法打开数据库‘mysql_MySQL数据库之MYSQL无法启动解决方法

    本文主要向大家介绍了MySQL数据库之MYSQL无法启动解决方法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 在my.ini(linux下/etc/my.cnf)加上skip ...

  7. 忘记mysql 密码的取回方法

    如果 MySQL 正在运行, 首先杀之: killall -TERM mysqld(如果是windows,直接调出进程管理器,结束之)  以安全模式启动 MySQL : /usr/bin/safe_m ...

  8. [转]MySQL修改时区的方法小结

    本文转自:https://www.cnblogs.com/mracale/p/6064447.html 这篇文章主要介绍了MySQL修改时区的方法,总结分析了三种常见的MySQL时区修改技巧,包括命令 ...

  9. centos7 安装mysql php_Centos7安装mysql与php的方法

    本文主要和大家分享Centos7安装mysql与php的方法,希望能帮助到大家. 相关mysql视频教程推荐:<mysql教程> 官网下载安装mysql-server 依次使用下面三个命令 ...

最新文章

  1. python打开文件夹对话框_文件对话框打开文件夹中的文件(tkinter)
  2. rommon模式下给路由器灌入IOS
  3. 自由自在意式手工冰淇淋,健康时尚的美味零食
  4. java ef 引用问题_java调用shell(ps -ef | grep )问题
  5. 项目管理思考——我适合做项目经理吗
  6. 【HDU - 5627】Clarke and MST(最大生成树,与运算性质,最小生成树MST变形)
  7. vue2之对象属性的监听
  8. conda报错Collecting package metadata
  9. 打开eclipse报错 Version 1.7.0_80 of JVM is not suitable for this product
  10. word2vec中的数学原理详解
  11. 明日之后系统互通的服务器,明日之后安卓苹果互通么?安卓苹果混服/能联机吗问题介绍[图]...
  12. 2016年前端技术观察
  13. 13-MyBatis 使用了哪些设计模式?在源码中是如何体现的?
  14. java版超级马里奥
  15. 对极限编程四个核心的理解
  16. socket error 10053 的可能原因
  17. Oracle磁盘恢复,探索Oracle之RMAN_07 磁盘损坏数据丢失恢复
  18. 颜宁宣布离美归国;中信集团收购腾讯为假消息;寒武纪否认裁员传闻;造车项目被叫停?小米回应 | 每日大事件...
  19. 活久见,40W年薪低?35岁测试工程师惨遭女孩嫌弃,估计是被鸡汤洗脑了
  20. JS 数字 、中文、 英文、判断

热门文章

  1. nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)
  2. 中国人工智能学会通讯——搜狗搜索:从搜索到问答 1.1 引言
  3. 使用 MTR 诊断网络问题
  4. 搭建自己的前端自动化测试脚手架(三)
  5. 提高PHP编程效率的20个要点(转)
  6. rail server 启动时报告错误undefine mysql_get_client_info
  7. 寄语2013应届实习生
  8. 什么样的女人才算是好老婆?
  9. 为什么多线程可以利用到多核?
  10. [LeetCode]题解(python):011-Container With Most Water