我怎样才能强制损坏 MySQL 表?

我怎样才能强制损坏 MySQL 表?

我写了一个简单的纳吉奥斯调用的插件mysql检查(检查损坏的表)并且如果有损坏则会发出警告。

但是现在我的表都没有损坏。所以我不能 100% 确定我的插件是否正常工作。我有一个开发服务器,但它不是任务关键型的。我如何才能强制其中一个(或任何)表损坏,以便我可以测试我的 nagios 警报?

记录显示服务器是 Ubuntu Dapper,mysql 是 5.0 版本

答案1

通常,您无法通过从 /var/lib/mysql 复制数据库然后再将其复制回来的方式备份数据库,因为它们已损坏,您必须使用 mysqldump。

因此,如果您进入 /var/lib/mysql 中的数据库文件夹之一,即 /var/lib/mysql/myDB/ 并弄乱一些应该执行此操作的文件:-)

因此,我建议复制其中一个文件,用十六进制编辑器稍加编辑,然后再复制回来。

答案2

cat DB1.myd /dev/random > DB2.myd

答案3

你可以使用模糊测试工具zzuf模糊测试预先存在的数据库文件,例如

zzuf < good.myd > fuzzed.myd

答案4

我建议,模拟故障的更现实的方法是当 MySQL 执行密集更新时,将其从脚下抽走。向进程发出 SIGKILLmysqld应该就足够了。很有可能,当您重新启动 MySQL 时,有问题的表将被标记为崩溃。

或者,我建议应用其他人的建议,但针对的是.MYIindec 文件而不是数据文件。

相关内容