mysql ibdata file

mysql数据存储目录中的ibdata文件

这个是数据文件,不是日志文件,将innodb_file_per_table开启,使用独立表空间,每个表有个.ibd文件, ibdata1就只会存一些共享的信息,不会很大
正解,开启独立表空间后,经常做一下optimize table就可以回收被删除记录占用的碎片空间, ibdata1文件也不会再快速增长了

使用过MySQL的同学,刚开始接触最多的莫过于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 。
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%’;

Innodb存储引擎可以使用共享表空间或独立表空间,使用独立表空间时,需要将innodb_file_per_table加到配置文件中,也可以在variables中开启。
共享表空间是将所有的表的数据和索引保存在ibdata1中,这样的缺点是拷贝时必须拷贝整个大文件,而且删除表后容易产生碎片。
独立表空间是为每个表建立一个.ibd文件用来存储数据和.frm用来存数据词典信息,这样,mysql就将innodb表的数据存入各自对应的.ibd文件中了,但结构等信息还是会写入ibdata。
innodb_file_per_table变量只能在配置文件里修改,不能使用set global ...将innodb_file_per_table关闭之后,建立innoDB表时只生成.frm文件,数据和索引都保存在共享表空间ibdata1中。

mysql ibdata file

时间: 2024-08-02 21:34:05

mysql ibdata file的相关文章

Mysql ibdata 丢失或损坏如何通过frm&ibd 恢复数据

mysql存储在磁盘中,各种天灾人祸都会导致数据丢失.大公司的时候我们常常需要做好数据冷热备,对于小公司来说要做好所有数据备份需要支出大量的成本,很多公司也是不现实的.万一还没有做好备份,数据被误删除了,或者ibdata损坏了怎么办呢?别担心,只要有部分的frm.ibd存在就可以恢复部分数据. 注意:一.这个是对innodb的数据恢复.myisam不需要这么麻烦,只要数据文件存在直接复制过去就可以.二.大家的mysql数据库必须是按表存放数据的,默认不是,但是大家生产肯定是按分表设置的吧,如果不

MySQL ibdata多路径扩容

vi /etc/my.cnf innodb_data_home_dir = innodb_data_file_path= /data/mysql/ibdata1:10M:autoextend(为目前ibdata情况) [[email protected] mysql]#mkdir -p /data2/mysql [[email protected]]# chown -R mysql:mysql/data2 [[email protected] scripts]#du -sh /data/mysq

linux下安装MySQL出错file /usr/share/mysql/charsets/latin2.xml from install of MySQL-......

linux64 red hat 6.3企业版 开始错误装了32位mysql最后怎么也装不上64mysql了,折腾了一番最后全部卸载搞定: file /etc/init.d/mysql from install of MySQL-server-5.5.28-1.linux2.6.x86_64 conflicts with file from package MySQL-server-5.1.7-0.i386    file /usr/bin/my_print_defaults from insta

Mysql uploader File

前几天和哥们做一次渗透测试,内网情况.防护相当严格. 内网不允许访问DMZ,DMZ不允许访问内网,除了服务端口,比如80,3306. 经过长时间的分析,就发现本机连接了内网的一个MYQL,发现WEB开启了PHPMYADMIN,于是模拟发包拿到了一个shell. 通过CURL来传递命令,发现即使对方是内网(也不允许出网,即使DMZ WEB也无法访问到),我不允许连接它,它也不允许连接到DMZ. query user一下,发现域管理会话在.但是如何把工具传上去呢? ()现在我们能做的就只有个MYSQ

mysql load file

当你与LOAD DATA INFILE一起使用SELECT ... INTO OUTFILE将一个数据库的数据写进一个文件并且随后马上将文件读回数据库时,两个命令的字段和处理选项必须匹配,否则,LOAD DATA INFILE将不能正确解释文件的内容.假定你使用SELECT ... INTO OUTFILE将由逗号分隔的字段写入一个文件: mysql> SELECT * FROM table1 INTO OUTFILE 'data.txt'           FIELDS TERMINATED

Modify MySQL dump file the fatest way

使用mysql命令导入mysqldump生成的sql文件时,为了提高导入速度,往往需要修改dump文件,但是面对一个几十GB的文件,这事儿就太崩溃了,最快速的方法是这么做: ( echo "SET AUTOCOMMIT=0;" echo "SET UNIQUE_CHECKS=0;" echo "SET FOREIGN_KEY_CHECKS=0;" cat cc_jiecao.sql echo "SET FOREIGN_KEY_CHECK

CentOS6 下MySQL option file

my.cnf内容如下 # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html [client] # password = ... # port = ... # socket = ... default_character_set = utf8 [mysqld] basedir = /usr/local/

mysql启动不成功显示The server quit without updating PID file的解决方法

上午在编译安装mysql的时候 就出现标题中的错误,经实践在第二步操作后启动成功,参考链接 链接http://linuxadministrator.pro/blog/?p=225 You may face this error while restarting MySQL. Below are some fix for the same. [[email protected]:- ] $ service mysqld startStarting MySQL… ERROR! The server

[转]MySQL: Starting MySQL….. ERROR! The server quit without updating PID file

转自: http://icesquare.com/wordpress/mysql-starting-mysql-error-the-server-quit-without-updating-pid-file/ 他也是更新系统后出现的这个问题,我是更新之后出现的该问题,所以按照他的思路删掉配置文件就可以启动了,至于为什么会出现这种问题,回头有时间再仔细研究下. This step-by-step guide is mainly for FreeBSD, however the idea is th