ibdata1是?

MySQL使用InnoDB引擎的时候,ibdata1这个文件会随着时间的增长,会变得越来越大,占据大量的磁盘空间。

那么,ibdata1里保存了哪些东西,为什么会变得越来越大呢,让我们开看看ibdata1的构造。

ibdata1是InnoDB的共有表空间,默认情况下会把表空间存放在一个文件ibdata1中,会造成这个文件越来越大。

发现问题所在之后,解决方法就是,使用独享表空间,将表空间分别单独存放。MySQL开启独享表空间的参数是Innodb_file_per_table,会为每个Innodb表创建一个.ibd的文件。

操作步骤

下面讲一下具体的操作。

1) 导出数据库中所有数据

# mysqldump -u root -p --all-database > /tmp/all-database.dump

2) 删除数据库中数据

# mysql -u root -p
mysql> drop database dbname;

3) 停止MySQL

# /etc/init.d/mysqld stop

4) 删除ibdata1文件(移动到/tmp下)

# mv /var/lib/mysql/ibdata1 /tmp
# mv /var/lib/mysql/ib_logfile0 /tmp
# mv /var/lib/mysql/ib_logfile1 /tmp

5) my.cnf设定

# vi /etc/my.cnf
开启独享表空间,并指定ibdata1大小为1G,ibdata2大小200M,自动扩张。
innodb_data_home_dir = /var/lib/mysql
innodb_data_file_path = ibdata1:1G;ibdata2:200M:autoextend
innodb_file_per_table

6) 启动MySQL

# /etc/init.d/mysqld start

7) 导入数据

# mysql -u root -p < /tmp/all-database.dump

8) 确认

后记

开启独享表空间后,并不是说就不需要ibdata1了,因为在ibdata1中还保存着下面这些数据。

  • InnoDB表的元数据
  • Buffer
  • UNDO日志
时间: 2024-10-12 19:25:26

ibdata1是?的相关文章

FAQ系列 | ibdata1系统表空间文件都包含什么内容

InnoDB系统表空间文件ibdata1中存储了以下几部分信息: Data dictionary Double write buffer Insert buffer Rollback segments UNDO space Foreign key constraint system tables 因此,我们在初始化ibdata1时,最好设置大一些,比如至少1GB以上. 此外,从MySQL 5.6版本开始,支持将UNDO Space放在独立的undo表空间里,强烈建议使用. 这样就可以避免因为在高

MySQL ibdata1文件迁移

目的:主机系统/var目录快满了,经查询最大的文件是mysql的ibdata1文件,有17G大小,故需要迁移这个文件到其他目录下,以释放/var目录空间. 1.先备份下数据库是个好习惯 # mysqldump -q -uuser -ppassword --add-drop-table --all-databases > /usr2/backup/mysql_1013.sql 2.关闭mysql服务 # /etc/init.d/mysqld stop 停止 mysqld: [确定] # /etc/

MYSQL服务无法启动:InnoDB: .\ibdata1 can&#39;t be opened in read-write mode

今天在那做实验倒腾mysql数据库,后来发现服务无法启动,查看日志报错如下: 2015-01-07 17:48:54 9136 [ERROR] InnoDB: .\ibdata1 can't be opened in read-write mode 2015-01-07 17:48:54 9136 [ERROR] InnoDB: The system tablespace must be writable! 2015-01-07 17:48:54 9136 [ERROR] Plugin 'Inn

MySQL中ib_logfile和ibdata1参数大小被修改后

1. 环境说明 RHEL 6.4 x86_64 + MySQL 5.5.37和MySQL 5.6.19 blog地址:http://blog.csdn.net/hw_libo/article/details/39215723 2. 案例:redo log文件(ib_logfile)大小参数被修改:innodb_log_file_size innodb_log_file_size = 256M  -- 修改为200M 版本是5.5的,启动失败,会出现如下错误: InnoDB: Error: log

InnoDB: auto-extending data file ./ibdata1 is of a different size 640 pages (rounded down to MB) than specified in the .cnf file: initial 768 pages, max 0 (relevant if non-zero) pages!

问题描述: centos 安装MySQL $yum install mysql-server 安装之后执行命令mysql 报错: 查看mysql的启动日志: [ERROR] InnoDB: auto-extending data file ./ibdata1 is of a different size 640 pages (rounded down to MB) than specified in the .cnf file: initial 768 pages, max 0 (relevan

[ERROR] InnoDB: Unable to lock ./ibdata1, error: 11

问题描述:启动MySQL后,出现连接不上,报 [ERROR] InnoDB: Unable to lock ./ibdata1, error: 11[[email protected] ~]# service mysql startStarting MySQL [ OK ][[email protected] ~]# mysql -uroot -poracleWarning: Using a password on the command line interface can be insecu

auto-extending data file ./ibdata1 is of a different size auto-extending data file ./ibdata1 is of a different size

160315 17:08:19 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data160315 17:08:19 [Warning] Using unique option prefix thread_cache instead of thread_cache_size is deprecated and will be removed in a future release. Please u

[转]MySql ibdata1文件太大如何缩小

From : http://blog.chinaunix.net/uid-24373487-id-4223322.html 原文地址:MySql ibdata1文件太大如何缩小 作者:emailwht MySql ibdata1文件太大如何缩小 MySql innodb如果是共享表空间,ibdata1文件越来越大,达到了30多个G,对一些没用的表进行清空:truncate table xxx;然后optimize table xxx; 没有效果因为对共享表空间不起作用.mysql ibdata1

MySQL ibdata1撑爆占满磁盘空间

MySQL主从由于ibdata1占满磁盘空间-->主从失效 因为设置了innodb_file_per_table = 1,ibdata1依旧撑爆占满磁盘空间 主从断的时候,IO线程在连接,SQL线程断掉. 想要了解为何ibdata1增长那么大? 个人这么理解的:主从断掉,IO线程在,获取到了事件事物的更新,而SQL线程断掉,导致产生大量的undo,撑爆了ibdata1. 最终验证发现,确实是undo占满了ibdata1. 下载一个小工具:py_innodb_page_info.py  本人网盘下

mysql 里的 ibdata1 文件不断的增长?

我们在 Percona 支持栏目经常收到关于 MySQL 的 ibdata1 文件的这个问题.当监控服务器发送一个关于 MySQL 服务器存储的报警时,恐慌就开始了 —— 就是说磁盘快要满了.一番调查后你意识到大多数地盘空间被 InnoDB 的共享表空间 ibdata1 使用.而你已经启用了 innodb_file_per_table,所以问题是: ibdata1存了什么? 当你启用了 innodb_file_per_table,表被存储在他们自己的表空间里,但是共享表空间仍然在存储其它的 In