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

  • 相关阅读:
    python——简单tcp
    关于app签名——无法对 jar 进行签名: 时间戳颁发机构没有响应
    ionic 创建证书
    Android SDK proxy server
    ionic2-生成error
    ng2项目报错
    关于ckeditor粘贴图片自动上传
    简单分页效果
    linux好用的命令
    linux给用户添加sudo权限
  • 原文地址:https://www.cnblogs.com/amoy9812/p/6627254.html
Copyright © 2011-2022 走看看