zoukankan      html  css  js  c++  java
  • 如何收缩Mysql的ibdata1文件

    ibdata1是MySQL数据库中一个数据文件了,你会发现它来越大了,下面我来介绍收缩Mysql的ibdata1文件大小方法。

    如果你有使用InnoDB来存储你的Mysql表,使用默认设置应该会碰到个非常头疼的问题,在Mysql的数据目录里有个默认只有10MB叫ibdata1的文件没日没夜的增长让你烦透了吧?里面包含了InnoDB引擎存储的所有索引和数据信息,很可惜Mysql在设计的时候就没有收缩InnoDB表的功能,这就是为什么你在delete,truncate,drop这些表的时候这个文件大小没有丝毫要减少的原因,而且你还没办法直观的看到哪个数据库占用了大量的ibdata1,这个坑爹的问题在新版的Mysql中已经通过innodb_file_per_table这个选项来解决了,开启该选项后,每个InnoDB表的索引和数据都会按*.ibd命名存储到各个数据库中,但是这个选项默认是不开启的。

    如上所说,你没法去收缩InnoDB数据文件,你也没办法在一台没有打开innodb_file_per_table选项的机器上直接加上该选项让他工作,你必须在安装完Mysql就加上这个选项,或者按照本文介绍的方法来操作,无论你做任何操作,请确保你已经备份了整个数据库目录,也别忘了停掉Mysql相关的一些服务。

    1.mysqldump --extended-insert --all-databases --add-drop-database --disable-keys --flush-privileges --quick --routines --triggers > all-databases.sql
    2.停止Mysql服务;
    3.重命名mysql数据文件夹;
    4.修改my.cnf中的参数,添加innodb_file_per_table;
    在my.cnf中[mysqld]下设置
    innodb_file_per_table=1
    5.mysql_install_db重新初始化mysqld;
    6.开启Mysql服务;
    7.进入Mysql Console执行:
    ◦SET FOREIGN_KEY_CHECKS=0;
    ◦SOURCE all-databases.sql;
    ◦SET FOREIGN_KEY_CHECKS=1;
    8.重启数据库测试

    如果因为断电或者直接关机导致idb文件出错,就需要重构这些文件

    [mysqld]

    加 innodb_force_recovery=1

  • 相关阅读:
    JS-得到屏幕宽高、页面宽高
    CSS3-border-radius 属性
    从30岁到35岁:为你的生命多积累一些厚度【转载】
    HTML5-IOS WEB APP应用程序(IOS META)
    HTML-Meta中的viewport指令
    EasyUI-window包含一个iframe,在iframe中如何关闭window
    JS-为句柄添加监听函数
    EasyUI-EasyUI框架入门学习
    Linux下的C编程
    ***经典笔试题
  • 原文地址:https://www.cnblogs.com/amoy9812/p/6627254.html
Copyright © 2011-2022 走看看