如何使用另一个守护进程检查生产模式下的数据库完整性?

时间:2012-11-06 21:46:09

标签: mysql innodb maintenance health-monitoring heartbeat

我希望有一个守护进程监视数据库的运行状况,以确保它没有损坏,它将运行一个脚本,

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

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

2-我应该每5分钟在所有桌子上继续运行检查表吗?

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

请给我你的建议,

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

我的默认引擎是INNODB

1 个答案:

答案 0 :(得分:0)

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

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

请注意,这仅适用于mysqld实例未打开InnoDB的情况。因此,最好在mysqld关闭时执行此操作。


重新评论:

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

通常,任何高可用性策略都必须包含冗余

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