我希望有一个守护进程监视数据库的运行状况,以确保它没有损坏,它将运行一个脚本,
在不影响性能的情况下,最好的完整性检查是什么?
1-我应该在所有表中都有虚拟值,查询它们,如果它们被返回,假设数据库是健康的吗?
2-我应该每5分钟在所有桌子上继续运行检查表吗?
3-我应该运行mysqlcheck吗? (它锁定所有表格。)
请给我你的建议,
数据库将自行运行,以后没有人可以访问它,我只是想检测损坏,丢失整个数据是可以接受的,但我对系统中的损坏或停机时间零容忍。所以我想尽早检测到损坏,并在必要时擦除数据库并重新加载数据库。
我的默认引擎是INNODB
答案 0 :(得分:0)
要验证InnoDB .ibd文件的全部内容,可以使用innochecksum命令。
http://dev.mysql.com/doc/refman/5.5/en/innochecksum.html
请注意,这仅适用于mysqld实例未打开InnoDB的情况。因此,最好在mysqld关闭时执行此操作。
重新评论:
我建议您不要在生产服务器上运行mysqlcheck,因为如果检查发现InnoDB损坏,它会崩溃mysqld
。
通常,任何高可用性策略都必须包含冗余。
例如,您需要在双向复制中与主数据库配对的第二个MySQL实例。将一个指定为主要的,所有应用程序都写入。另一个是备份。现在您可以在辅助服务器上运行mysqlcheck,或者进行其他维护,升级,无论您想要什么。完成后,交换他们的角色,使次要成为主要角色。然后,您可以在第一台服务器上执行类似检查,而不会冒生产正常运行时间的风险。