1

每个星期六早上 8 点,我都会编写以下sh脚本来维护我的所有数据库。我mysqlcheck--check,--optimize--analyze.

这是脚本:

# check: checks table for integrity errors
mysqlcheck -u root -h mydbendpoint.com -p'mypass' --check --all-databases

# optimize: reorganizes physical storage of table and index data
mysqlcheck -u root -h mydbendpoint.com -p'mypass' --optimize --all-databases

# analyze: rebuild and optimize the performance of indexes
mysqlcheck -u root -h -h mydbendpoint.com -p'mypass' --analyze --all-databases

问题是,当它.sh运行时,它会占用大量磁盘空间。这是我的 Amazon RDS 可用磁盘空间的屏幕截图:

在此处输入图像描述

这三个命令中的哪一个占用了这么多磁盘空间来制作它们mysqlchecks--check,--optimize--analyze? 还是他们三个?

我在官方文档中找不到任何关于此的内容。

提前致谢。

4

1 回答 1

2

--optimize使用了所有的空间。如果您已使用innodb_file_per_table配置服务器,它基本上会重建所有表以重新获得未使用的空间(已删除的数据)

这很少需要,您可以跳过它。

也就是说,您真的在所有数据库上都这样做了吗?这也不应该是必要的。我只有一个数据库每周检查一次,而这台主机的目的仅仅是验证我的备份是否有效。每周在此主机上恢复一次备份,然后 mysqlcheck 会验证所有表是否正常工作。就是这样。如果我在生产中的服务器上这样做,我的老板会解雇我 :)

于 2018-09-14T07:50:10.690 回答