如何使用另一个守护进程在生产模式下检查数据库完整性?
Posted
技术标签:
【中文标题】如何使用另一个守护进程在生产模式下检查数据库完整性?【英文标题】:How to check database integrity in production mode using another daemon? 【发布时间】:2012-11-06 21:46:08 【问题描述】:我想要一个守护进程来监控数据库的健康状况,以确保它没有损坏,它将运行一个脚本,
在不影响性能的情况下最好的完整性检查是什么?
1- 我是否应该在所有表中都有虚拟值,查询它们,如果它们被返回,假设数据库是健康的?
2- 我应该每 5 分钟对所有表运行一次检查表吗?
3- 我应该运行 mysqlcheck 吗? (它锁定了所有表..)
请给我你的建议,
数据库将自行运行,以后没有人可以访问它,我只想检测损坏,丢失整个数据是可以接受的,但我对系统损坏或停机时间零容忍。所以我想及早发现损坏,并在必要时清除数据库并重新加载数据库。
我的默认引擎是 INNODB
【问题讨论】:
【参考方案1】:要验证 InnoDB .ibd 文件的全部内容,您可以使用 innochecksum 命令。
http://dev.mysql.com/doc/refman/5.5/en/innochecksum.html
请注意,这仅在 InnoDB 未被 mysqld 实例打开时才有效。所以,最好在 mysqld 关闭时进行。
你的评论:
我不建议在需要保持运行的生产服务器上运行 mysqlcheck,因为 如果 检查发现 InnoDB 损坏,它将崩溃 mysqld
。
一般来说,任何高可用性策略都必须包含冗余。
例如,您需要在双向复制中与主服务器配对的第二个 MySQL 实例。指定一个作为主要的,您的所有应用程序都写入其中。另一个是备份。现在您可以在辅助节点上运行 mysqlcheck,或者进行其他维护、升级,随心所欲。完成后,交换他们的角色,使次要角色成为主要角色。然后,您可以在第一台服务器上进行类似检查,而不会影响生产正常运行时间。
【讨论】:
谢谢 我在停电后考虑过,因为它需要停止 mysql 才能运行,在生产中,我无法停止服务器,那么我的选项将仅限于检查表和mysql检查。您是否建议在生产模式下经常运行这两个?以上是关于如何使用另一个守护进程在生产模式下检查数据库完整性?的主要内容,如果未能解决你的问题,请参考以下文章
Python全栈之路模块----之-----守护进程进程锁队列生产者消费者模式