Jos*_*ton 5 mysql innodb magento
我需要回收一些磁盘空间,所以我从我的服务器中删除了一个旧的 Magento 数据库。数据库大小约为 16 GB。我很惊讶一旦数据库被删除,它并没有真正释放磁盘空间。
我尝试重新启动 MySQL 服务器,但它仍在占用该空间。
如果重要的话,Magento 数据库会大量使用 innoDB。
我能做些什么来恢复这个磁盘空间吗?
我在 StackOverflow 中为 InnoDB 编写了一个 CleanUp 程序
/sf/answers/283938301/(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
Run Code Online (Sandbox Code Playgroud)
旁注:无论您为 innodb_buffer_pool_size 设置什么,请确保innodb_log_file_size是 innodb_buffer_pool_size 的 25%。
5)删除ibdata1、ib_logfile0和ib_logfile1
此时,/var/lib/mysql中应该只有mysql模式
6)重启mysql
这将分别以 10MB、ib_logfile0 和 ib_logfile1 分别以 1G 的速度重新创建 ibdata1
7) 重新加载 SQLData.sql 到 mysql
ibdata1 会增长但只包含表元数据
每个 InnoDB 表都将存在于 ibdata1 之外
假设您有一个名为 mydb.mytable 的 InnoDB 表。如果你进入/var/lib/mysql/mydb,你会看到两个代表表的文件
ibdata1 将不再包含 InnoDB 数据和索引。
使用 /etc/my.cnf 中的 innodb_file_per_table 选项,您可以运行 OPTIMIZE TABLE mydb.mytable 并且文件 /var/lib/mysql/mydb/mytable.ibd 实际上会缩小。
在我作为 MySQL DBA 的职业生涯中,我已经多次这样做了
事实上,我第一次这样做时,我将一个 50GB 的 ibdata1 文件压缩成 500MB。
试一试。如果您对此有更多疑问,请给我发电子邮件。相信我。这将在短期和长期内奏效。!!!
| 归档时间: |
|
| 查看次数: |
5162 次 |
| 最近记录: |