0

0

mysql ibdata1文件的缩小操作_MySQL

php中文网

php中文网

发布时间:2016-06-01 13:36:12

|

1549人浏览过

|

来源于php中文网

原创

bitsCN.com

mysql ibdata1文件的缩小操作

 

最近发现MYSQL 的碎片狂大,在一张有上千万的表空间里面碎片占用十分厉害,但是单独的用alert table table_name engine=innodb 基本无法执行,因为表实在是过大,ALERT方法适合一些中小型的数据库。所以最后的办法就是导入导出的步骤 

mysql ibdata1存放数据,索引等,是MYSQL的最主要的数据。 

 

如果不把数据分开存放的话,这个文件的大小很容易就上了G,甚至10+G。对于某些应用来说,并不是太合适。因此要把此文件缩小。 

 

方法:数据文件单独存放。 

 

步骤: 

 

1,备份数据库

 

从命令行进入MySQL Server 5.0/bin 

备份全部数据库,执行命令mysqldump -q -uusername -pyourpassword --add-drop-table -all-databases > /all.sql

 

做完此步后,停止数据库服务。 

 

2,修改mysql配置文件 

 

修改my.ini文件,增加下面配置 

 

innodb_file_per_table 

 

对每张表使用单独的innoDB文件, 修改/etc/my.cnf文件 

 

3,删除原数据文件 

 

删除原来的ibdata1文件及日志文件ib_logfile*,删除data目录下的应用数据库文件夹(mysql文件夹不要删) 

 

4,还原数据库 

 

启动数据库服务 

 

从命令行进入MySQL Server 5.0/bin 

还原全部数据库,执行命令mysql -uusername -pyourpassword

 

经过以上几步后,可以看到新的ibdata1文件就只有几十M了,数据及索引都变成了针对单个表的小ibd文件了,它们在相应数据库的文件夹下面。 

关于innodb_file_per_table 

 

使用过MySQL的同学,刚开始接触最多的莫过于MyISAM表引擎了,这种引擎的数据库会分别创建三个文件:表结构、表索引、表数据空间。我们可以将某个数据库目录直接迁移到其他数据库也可以正常工作。然而当你使用InnoDB的时候,一切都变了。 

 

InnoDB 默认会将所有的数据库InnoDB引擎的表数据存储在一个共享空间中:ibdata1,这样就感觉不爽,增删数据库的时候,ibdata1文件不会自动收缩,单个数据库的备份也将成为问题。通常只能将数据使用mysqldump 导出,然后再导入解决这个问题。 

DM建站系统汽车保养维修HTML5网站模板1.5
DM建站系统汽车保养维修HTML5网站模板1.5

DM建站系统汽车保养维修HTML5网站模板,DM企业建站系统。是由php+mysql开发的一套专门用于中小企业网站建设的开源cms。DM系统的理念就是组装,把模板和区块组装起来,产生不同的网站效果。可以用来快速建设一个响应式的企业网站( PC,手机,微信都可以访问)。后台操作简单,维护方便。DM企业建站系统安装步骤:第一步,先用phpmyadmin导入sql文件。 第二步:把文件放到你的本地服务器

下载

 

在MySQL的配置文件[mysqld]部分,增加innodb_file_per_table参数。 

 

可以修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间。 

 

独立表空间: 

 

优点: 

 

1.  每个表都有自已独立的表空间。 

2.  每个表的数据和索引都会存在自已的表空间中。 

3.  可以实现单表在不同的数据库中移动。 

4.  空间可以回收(除drop table操作处,表空不能自已回收) 

 

a)         Drop table操作自动回收表空间,如果对于统计分析或是日值表,删除大量数据后可以通过:alter table TableName engine=innodb;回缩不用的空间。 

 

b)         对于使innodb-plugin的Innodb使用turncate table也会使空间收缩。 

 

c)         对于使用独立表空间的表,不管怎么删除,表空间的碎片不会太严重的影响性能,而且还有机会处理。 

 

缺点: 

单表增加过大,如超过100个G。 

 

结论: 

 

共享表空间在Insert操作上少有优势。其它都没独立表空间表现好。当启用独立表空间时,请合理调整一 下:innodb_open_files 。 

 

InnoDB Hot Backup(冷备)的表空间cp不会面对很多无用的copy了。而且利用innodb hot backup及表空间的管理命令可以实现单现移动。 

 

1.innodb_file_per_table设置.开启方法: 

在my.cnf中[mysqld]下设置 

innodb_file_per_table=1 

 

2.查看是否开启: 

mysql> show variables like ‘%per_table%’; 

 

3.关闭独享表空间 

innodb_file_per_table=0关闭独立的表空间 

mysql> show variables like ‘%per_table%’;

 

bitsCN.com

相关专题

更多
Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

2

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

2

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

0

2025.12.24

csgo视频观看入口合集
csgo视频观看入口合集

本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

29

2025.12.24

yandex外贸入口合集
yandex外贸入口合集

本专题汇总了yandex外贸入口地址,阅读下面的文章了解更多内容。

58

2025.12.24

添加脚注通用方法
添加脚注通用方法

本专题整合了添加脚注方法合集,阅读专题下面的文章了解更多内容。

1

2025.12.24

重启电脑教程汇总
重启电脑教程汇总

本专题整合了重启电脑操作教程,阅读下面的文章了解更多详细教程。

3

2025.12.24

纸张尺寸汇总
纸张尺寸汇总

本专题整合了纸张尺寸相关内容,阅读专题下面的文章了解更多内容。

5

2025.12.24

Java Spring Boot 微服务实战
Java Spring Boot 微服务实战

本专题深入讲解 Java Spring Boot 在微服务架构中的应用,内容涵盖服务注册与发现、REST API开发、配置中心、负载均衡、熔断与限流、日志与监控。通过实际项目案例(如电商订单系统),帮助开发者掌握 从单体应用迁移到高可用微服务系统的完整流程与实战能力。

1

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.7万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

Laravel---API接口
Laravel---API接口

共7课时 | 0.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号