zoukankan      html  css  js  c++  java
  • MySQL单独存放表空间Innodb_file_per_table

    在mysql中Innodb_file_per_table参数的作用是什么呢,其实许多的朋友是不知道的,今天我们来看这篇MySQL单独存放表空间Innodb_file_per_table参数详解之后你就懂了哦。

    MySQL可使用多种引擎,当我们选择使用InnoDB引擎的时候,ibdata1这个文件会随着时间的推移变得越来越大,占据大量的磁盘空间。

    那么,ibdata1里保存了哪些东西,为什么会变得越来越大呢?首先我们确认一下ibdata1的结构,ibdata1是InnoDB的共有表空间,默认配置是把全部表空间存放到ibdata1中,因此而造成ibdata1文件无限增长需释放之说。

    MySQL的Innodb_file_per_table参数控制表空间存放方式,通过配置Innodb_file_per_table参数可把全部表空间存放到ibdata1的方式改为使用独享表空间将表空间分别单独存放。

    下面介绍一下具体的操作。

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

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

    2) 删除数据库中数据

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

    3) 停止MySQL

    # service mysqld stop

    4) 删除ibdata1文件

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

    5) 配置innodb_file_per_table

    # vi /etc/my.cnf
    innodb_data_home_dir = /var/lib/mysql
    innodb_data_file_path = ibdata1:1G;ibdata2:200M:autoextend
    innodb_file_per_table

    开启独享表空间,并指定ibdata1大小为1G,ibdata2大小200M,自动扩张。

    6) 启动MySQL

    # service mysqld start

    7) 导入数据

    把刚才导出来的数据库,导入至数据库。

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

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

    InnoDB表的元数据
    Buffer
    UNDO日志

  • 相关阅读:
    python-函数进阶
    SHELL wordpress.sh
    XFS: possible memory allocation deadlock in kmem_alloc (mode:0x2d0)
    Puppet install with nginx unicorn
    CentOS 6内核编译问题整理
    Openstack 本地yum源配置
    Openstack 本地yum源配置
    hpsa 0000:0a:00.0: out of memory
    openstack VNC安全问题
    CentOS下crash分析内核kdump文件方法
  • 原文地址:https://www.cnblogs.com/cheng6018/p/8391450.html
Copyright © 2011-2022 走看看