收缩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就领赏去吧。
收缩Mysql的ibdata1文件大小方法的更多相关文章
- 如何收缩Mysql的ibdata1文件
ibdata1是MySQL数据库中一个数据文件了,你会发现它来越大了,下面我来介绍收缩Mysql的ibdata1文件大小方法. 如果你有使用InnoDB来存储你的Mysql表,使用默认设置应该会碰到个 ...
- 安装、设置与启动MySql绿色版的方法
原文:安装.设置与启动MySql绿色版的方法 1.解压 mysql-noinstall-5.1.30-win32.zip(下载地址http://dev.mysql.com/downloads/mysq ...
- MySQL Server 的安装方法及简要步骤
闲扯两句: 小弟不才,由于缺乏明确的职业规划,初毕业的那两年从事的是网络管理工作,接触最多的是计算机硬件和网络设备. 近几年才开始转向DB行业,最初是自学,过程中走了不少弯路,后来参加的专职的DBA培 ...
- MySQL的ibdata1文件占用过大瘦身
处理MySQL的ibdata1文件过大问题本人在对数据库进行大量的数据插入和删除的时候,发现ibdata1的占了将近一个T ibdata1文件是什么? ibdata1是一个用来构建innodb系统表空 ...
- mysql主从不一致解决方法
方法一:忽略错误后,继续同步 该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况 stop slave; #表示跳过一步错误,后面的数字可变 set global ...
- MySql数据库乱码解决方法
MySql数据库乱码解决方法 解决乱码问题一个原则:存取系统使用一致的编码规则. 多使用mysql的原生命令行,这样才能做更多的事情. 第一步: 确认应用系统需要使用的编码 java的默认编码是跟 ...
- Mysql导入数据库的方法
mysql导入数据库的方法 | 浏览:41023 | 更新:2012-11-01 19:45 1 2 3 4 5 6 7 分步阅读 MySQL是一个中.小型关系型数据库管理系统,由瑞典MySQL AB ...
- 修改mysql默认字符集的方法
+--------------------------+---------------------------------+ | Variable_name | Value | +---------- ...
- 开启Mysql远程访问的所有方法
开启Mysql远程访问的所有方法 http://superyjcqw.blog.163.com/blog/static/16105830520117111040436/ Mysql默认是不可以通过远程 ...
随机推荐
- eclipse创建python项目
http://jingyan.baidu.com/article/19192ad8173300e53f570757.html
- copy
拷贝文件,不覆盖重复文件 yes no|cp -i a b
- centOS学习part3:远程工具VNC的安装与配置
0 上一篇(http://www.cnblogs.com/souvenir/p/3875484.html)我们介绍了通过yum安装JDK的实例,初步见识了yum命令的强大.本章我们将继续使用yum命令 ...
- C#DataGridView 美化
private void dataGridView(DataGridView dataGridView) { System.Windows.Forms.DataGridViewCellStyle da ...
- Spring框架学习之第8节
<bean id=”foo” class=”…Foo”> <property name=”属性”> <!—第一方法引用--> <ref bean=”bean对 ...
- IIS7 ASP.NET 未被授权访问所请求的资源
IIS7 ASP.NET 未被授权访问所请求的资源 ASP.NET 未被授权访问所请求的资源.请考虑授予 ASP.NET 请求标识访问此资源的权限. ASP.NET 有一个在应用程序没有模拟时使用的基 ...
- iOS开发——技术精华Swift篇&Swift 2.0和Objective-C2.0混编之第三方框架的使用
swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.Swift语言采用安全编程模式,且引 ...
- x11vnc
http://cisight.com/how-to-setup-vnc-server-remote-desktop-in-ubuntu-11-10-oneiric/ Install VNC serve ...
- 266. Palindrome Permutation
题目: Given a string, determine if a permutation of the string could form a palindrome. For example,&q ...
- Data Flow ->> Union All
Wrox的<Professional Microsoft SQL Server 2012 Integration Services>一书中再讲Merge的时候有这样一段解释: This t ...