AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 409630
Accepted
Josh Pennington
Josh Pennington
Asked: 2012-07-21 05:45:44 +0800 CST2012-07-21 05:45:44 +0800 CST 2012-07-21 05:45:44 +0800 CST

删除 Magento MySQL 数据库后回收磁盘空间

  • 772

我需要回收一些磁盘空间,所以我从我的服务器上删除了一个旧的 Magento 数据库。数据库大小约为 16 GB。令我惊讶的是,一旦数据库被删除,它并没有真正释放磁盘空间。

我尝试重新启动 MySQL 服务器,但它仍在占用该空间。

如果重要的话,Magento 数据库会大量使用 innoDB。

我能做些什么来恢复这个磁盘空间吗?

mysql
  • 2 2 个回答
  • 5512 Views

2 个回答

  • Voted
  1. Best Answer
    RolandoMySQLDBA
    2012-07-21T11:16:17+08:002012-07-21T11:16:17+08:00

    我在 StackOverflow 中为 InnoDB 写了一个 CleanUp 程序

    https://stackoverflow.com/a/4056261/491757(2010年 10 月 29 日)

    这里是

    要一劳永逸地缩小 ibdata1,您必须执行以下操作:

    1) MySQLDump所有数据库到一个SQL文本文件中(称之为SQLData.sql)

    2)删除所有数据库(mysql模式除外)

    3)关闭mysql

    4)将以下行添加到/etc/my.cnf

    [mysqld]
    innodb_file_per_table
    innodb_flush_method=O_DIRECT
    innodb_log_file_size=1G
    innodb_buffer_pool_size=4G
    

    旁注:无论您为 innodb_buffer_pool_size 设置什么,请确保innodb_log_file_size是 innodb_buffer_pool_size 的 25%。

    5)删除ibdata1、ib_logfile0和ib_logfile1

    此时,/var/lib/mysql 中应该只有mysql schema

    6)重启mysql

    这将以 10MB 的大小重新创建 ibdata1,以 1G 的大小重新创建 ib_logfile0 和 ib_logfile1

    7) 重新加载 SQLData.sql 到 mysql

    ibdata1 会增长但只包含表元数据

    每个 InnoDB 表都将存在于 ibdata1 之外

    假设您有一个名为 mydb.mytable 的 InnoDB 表。如果你进入 /var/lib/mysql/mydb,你会看到两个代表表的文件

    • mytable.frm(存储引擎头文件)
    • mytable.ibd(mydb.mytable 的表数据和表索引的主页)

    ibdata1 将不再包含 InnoDB 数据和索引。

    使用 /etc/my.cnf 中的 innodb_file_per_table 选项,您可以运行 OPTIMIZE TABLE mydb.mytable 文件 /var/lib/mysql/mydb/mytable.ibd 实际上会缩小。

    在我作为 MySQL DBA 的职业生涯中,我已经做过很多次了

    事实上,我第一次这样做时,将一个 50GB 的 ibdata1 文件压缩为 500MB。

    试试看。如果您对此有进一步的疑问,请给我发电子邮件。相信我。这将在短期和长期内发挥作用。!!!

    • 8
  2. Michael Hampton
    2012-07-21T05:54:49+08:002012-07-21T05:54:49+08:00

    目前,回收已删除的 InnoDB 数据库所用空间的唯一方法是转储所有数据库,停止 MySQL,删除底层存储文件,重新启动 MySQL,最后导入数据库转储。

    MySQL 文档有关于此的更多信息。

    • 1

相关问题

  • 开源与专有关系 db mgt 系统的优缺点是什么?

  • 在 solaris 10 上为 mysql 设置 max_allowed_pa​​cket

  • 如何移动 MySQL 的数据目录?

  • 通过 VPN 连接什么是远程服务器 IP?

  • mysql崩溃

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve