• [转]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的最主要的数据。
    如果不把数据分开存放的话,这个文件的大小很容易就上了G,甚至几十G。对于某些应用来说,并不是太合适。因此要把此文件缩小。
    无法自动收缩,必须数据导出,删除ibdata1,然后数据导入,比较麻烦,因此需要改为每个表单独的文件。
    解决方法:数据文件单独存放(共享表空间如何改为每个表独立的表空间文件)。
    步骤如下:
     
    1)备份数据库
    备份全部数据库,执行命令
    #mysqldump -q -uroot -ppassword --add-drop-table --all-databases >/home/backup/all.sql
    做完此步后,停止数据库服务。
    #service mysqld stop
     
    2)找到my.ini或my.cnf文件
    linux下执行 
    # /usr/libexec/mysqld --verbose --help | grep -A 1 'Default options'
    Default options are read from the following files in the given order:
    /etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf 
    windows环境下可以:
    mysqld --verbose --help > mysqlhelp.txt
    notepad mysqlhelp.txt
    在里面查找Default options,可以看到查找my.ini的顺序,以找到真实目录
     
    3)修改mysql配置文件
    打开my.ini或my.cnf文件
    [mysqld]下增加下面配置
    innodb_file_per_table=1
    验证配置是否生效,可以重启mysql后,执行
    #service mysqld restart
    #mysql -uroot -ppassword
    mysql> show variables like '%per_table%';
    +-----------------------+-------+
    | Variable_name         | Value |
    +-----------------------+-------+
    | innodb_file_per_table | ON    |
    +-----------------------+-------+
    1 row in set (0.00 sec)


    mysql> 

    看看innodb_file_per_table变量是否为ON
     
    4)删除原数据文件
    删除原来的ibdata1文件及日志文件ib_logfile*,删除/var/lib/mysql目录下的应用数据库文件夹(mysql文件夹不要删)
     
    5)还原数据库
    启动数据库服务
    从命令行进入MySQL Server
    还原全部数据库,执行命令
    #service mysqld start
    #mysql -uroot -pocs < /home/backup/all.sql 


    经过以上几步后,可以看到新的ibdata1文件就只有几十M了,数据及索引都变成了针对单个表的小ibd文件了,它们在相应数据库的文件夹下面。


    # ll
    total 295028
    drwx------  2 mysql mysql     36864 Apr 22 14:16 glpi
    drwx------  2 mysql mysql     36864 Feb 15 13:45 glpi-1
    -rw-rw----  1 mysql mysql  10485760 Apr 22 14:27 ibdata1
    -rw-rw----. 1 mysql mysql 270532608 Apr 22 14:14 ibdata1-1
    -rw-rw----  1 mysql mysql   5242880 Apr 22 14:27 ib_logfile0
    -rw-rw----. 1 mysql mysql   5242880 Apr 22 14:14 ib_logfile0_bak
    -rw-rw----  1 mysql mysql   5242880 Apr 22 14:28 ib_logfile1
    -rw-rw----. 1 mysql mysql   5242880 Apr 21 22:50 ib_logfile1_bak
    drwx------  2 mysql mysql      4096 Apr 22 14:16 mrbs
    drwx------  2 mysql mysql      4096 Apr 14 12:05 mrbs-1
    drwx------. 2 mysql mysql      4096 Apr 22 14:16 mysql
    srwxrwxrwx  1 mysql mysql         0 Apr 22 14:16 mysql.sock
    drwx------  2 mysql mysql     12288 Apr 22 14:16 ocsweb
    drwx------  2 mysql mysql     12288 Nov 16  2011 ocsweb-1


    # ll mrbs
    total 808
    -rw-rw---- 1 mysql mysql     61 Apr 22 14:16 db.opt
    -rw-rw---- 1 mysql mysql  10492 Apr 22 14:16 mrbs_area.frm
    -rw-rw---- 1 mysql mysql  98304 Apr 22 14:16 mrbs_area.ibd
    -rw-rw---- 1 mysql mysql   9264 Apr 22 14:16 mrbs_entry.frm
    -rw-rw---- 1 mysql mysql 131072 Apr 22 14:16 mrbs_entry.ibd
    -rw-rw---- 1 mysql mysql   9442 Apr 22 14:16 mrbs_repeat.frm
    -rw-rw---- 1 mysql mysql  98304 Apr 22 14:16 mrbs_repeat.ibd
    -rw-rw---- 1 mysql mysql   8888 Apr 22 14:16 mrbs_room.frm
    -rw-rw---- 1 mysql mysql 114688 Apr 22 14:16 mrbs_room.ibd
    -rw-rw---- 1 mysql mysql   8688 Apr 22 14:16 mrbs_users.frm
    -rw-rw---- 1 mysql mysql  98304 Apr 22 14:16 mrbs_users.ibd
    -rw-rw---- 1 mysql mysql   8658 Apr 22 14:16 mrbs_variables.frm
    -rw-rw---- 1 mysql mysql  98304 Apr 22 14:16 mrbs_variables.ibd
    -rw-rw---- 1 mysql mysql   8738 Apr 22 14:16 mrbs_zoneinfo.frm
    -rw-rw---- 1 mysql mysql  98304 Apr 22 14:16 mrbs_zoneinfo.ibd


    # ll mrbs-1
    total 88
    -rw-rw---- 1 mysql mysql    61 Apr 14 12:05 db.opt
    -rw-rw---- 1 mysql mysql 10492 Apr 14 12:05 mrbs_area.frm
    -rw-rw---- 1 mysql mysql  9264 Apr 14 12:05 mrbs_entry.frm
    -rw-rw---- 1 mysql mysql  9442 Apr 14 12:05 mrbs_repeat.frm
    -rw-rw---- 1 mysql mysql  8888 Apr 14 12:05 mrbs_room.frm
    -rw-rw---- 1 mysql mysql  8688 Apr 14 12:05 mrbs_users.frm
    -rw-rw---- 1 mysql mysql  8658 Apr 14 12:05 mrbs_variables.frm
    -rw-rw---- 1 mysql mysql  8738 Apr 14 12:05 mrbs_zoneinfo.frm
  • 相关阅读:
    数据分析优化之惩罚性线性回归算法
    数据分析之贝叶斯算法案例
    SSM-CRUD练习
    使用 Code First 迁移以设定数据库种子
    .Net Web Api相关学习内容
    ASP.NET MVC5的学习知识点
    Entity Framework的学习(ASP.NET MVC5的学习中的一部分)
    EFCore框架的学习
    jsp中的<%%>用法
    nginx出现404和403错误
  • 原文地址:https://www.cnblogs.com/Athrun/p/ibdata1.html
Copyright © 2020-2023  润新知