zoukankan      html  css  js  c++  java
  • ibdata1是?

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

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

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

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

    mysql_ibdata1_01

    操作步骤

    下面讲一下具体的操作。

    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) 确认

    mysql_ibdata1_02

    后记

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

    • InnoDB表的元数据
    • Buffer
    • UNDO日志
  • 相关阅读:
    嘿,新年快乐
    最近无状态~
    奥巴马:我们为什么要上学
    大学学不会逃课是不会有出息的!
    赫赫,给红十字捐款的sb了吧
    狄仁杰你敢不装逼吗
    腾讯qq开始耍威胁用户的无赖手段了
    <转>关于信仰
    恩,老了~~~
    Vue 2.0学习笔记: Vue中的computed属性
  • 原文地址:https://www.cnblogs.com/flish/p/5537679.html
Copyright © 2011-2022 走看看