• ibdata1文件--缩小mysql数据库的ibdata1文件


    摘要

    在MySQL数据库中,如果不指定innodb_file_per_table参数,单独存在每个表的数据,MySQL的数据都会存放在ibdata1文件。
    mysql ibdata1存放数据,索引等,是MYSQL的最主要的数据。


    1 ibdata1文件简介

    在innodb引擎下边,如果不指定innodb_file_per_table参数,ibdata1文件实际存储所有数据库的表结构信息和实际数据。这个文件会随着数据量的增多变得很大。


    2  innodb_file_per_table  

    (1)在配置文件my.cnf中加上这个参数,会使每个表单独生成文件。这样不会生成很大的ibdata1文件。

    innodb_file_per_table=1 

    (2)关于innodb_file_per_table  参数

    对于MyISAM表引擎,这种引擎的数据库会分别创建三个文件:表结构、表索引、表数据空间。我们可以将某个数据库目录直接迁移到其他数据库也可以正常工作。然而当你使用InnoDB的时候,一切都变了。 
     
    InnoDB 默认会将所有的数据库InnoDB引擎的表数据存储在一个共享空间中:ibdata1,这样就感觉不爽,增删数据库的时候,ibdata1文件不会自动收缩,单个数据库的备份也将成为问题。通常只能将数据使用mysqldump 导出,然后再导入解决这个问题。 
     
    在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 。 
     


    3 如何缩小ibdata1文件?

    1 备份数据库 
    备份全部数据库,执行命令mysqldump -q -uusername -pyourpassword --add-drop-table -all-databases > /all.sql
    做完此步后,停止数据库服务。 
     
    2,修改mysql配置文件 

    对每张表使用单独的innoDB文件, 修改/etc/my.cnf文件      innodb_file_per_table 
     
    3,删除原数据文件 
     
    删除原来的ibdata1文件及日志文件ib_logfile*,删除data目录下的应用数据库文 件夹(mysql文件夹不要删) 
     
    4,还原数据库 
     
    启动数据库服务 
     
    mysql -uusername -pyourpassword < /all.sql 
     
    经过以上几步后,可以看到新的ibdata1文件就只有几十M了,数据及索引都变成了针对单个表的小ibd文件了,它们在相应数据库的文件夹下面。 


    转载:综合摘抄自网上。

  • 相关阅读:
    Leo程序员羊皮卷文摘(更新ing)
    ubuntu下的yuv播放器
    浏览器之一
    海量数据处理常用思路和方法(zh)
    我本将心向明月,奈何明月照沟渠
    转载光纤通信之父
    重装系统或是更换电脑之后,Foxmail的恢复
    关于录制Linux视频
    Linux之路(原发表于07年,现在搬到博客)
    Gentoo安装 miniCD+stage3
  • 原文地址:https://www.cnblogs.com/catkins/p/5270435.html
Copyright © 2020-2023  润新知