1

我想要一个守护进程来监控数据库的健康状况,以确保它没有损坏,它将运行一个脚本,

在不影响性能的情况下,最好的完整性检查是什么?

1-我是否应该在所有表中都有虚拟值,查询它们,如果它们被返回,假设数据库是健康的?

2-我应该每 5 分钟对所有桌子运行一次检查表吗?

3-我应该运行mysqlcheck吗?(它锁定所有表..)

请给我你的建议,

数据库将自行运行,以后没有人可以访问它,我只想检测损坏,丢失整个数据是可以接受的,但我对系统损坏或停机时间零容忍。所以我想及早发现损坏,并在必要时清除数据库并重新加载数据库。

我的默认引擎是 INNODB

4

1 回答 1

0

要验证 InnoDB .ibd 文件的全部内容,可以使用 innochecksum 命令。

http://dev.mysql.com/doc/refman/5.5/en/innochecksum.html

请注意,这仅在 mysqld 实例未打开 InnoDB 时才有效。因此,最好在 mysqld 关闭时执行此操作。


回复您的评论:

我不建议在您需要熬夜的生产服务器上运行 mysqlcheck,因为如果检查发现 InnoDB 损坏,它将崩溃mysqld

一般来说,任何高可用性策略都必须包括冗余

例如,您需要在双向复制中与主服务器配对的第二个 MySQL 实例。指定一个作为主要的,您的所有应用程序都写入其中。另一个是备份。现在您可以在辅助服务器上运行 mysqlcheck,或者进行其他维护、升级,随心所欲。完成后,交换他们的角色,使次要成为主要。然后,您可以在第一台服务器上进行类似的检查,而不会冒着生产正常运行时间的风险。

于 2012-11-06T22:24:33.623 回答