我有一个大的MySQL InnoDB表的问题,我想知道如果有人在这里有提高稳定性的build议。
我遇到的问题是, CHECK TABLE ... FAST会locking表格,阻止任何读取,而对于这个大的表格,这意味着它离线一个小时。
每当MySQL启动时,默认的Debian安装都会对所有的东西运行CHECK TABLE ,这会导致停机。 现在,我已经禁用了这个function,但是让我有点紧张,对这些系统设置感到厌倦。
我有另一个cronjob批量加载数据到正在使用ALTER TABLE ... DISABLE KEYS和ALTER TABLE ... ENABLE KEYS ,这可能是相关的,但我还没有能够确认。
有没有人看过CHECK TABLE阻止访问大型InnoDB表的情况?
我在ServerFault中写了一段时间 ,表明你不能在InnoDB表上禁用KEYS和ENABLE KEYS。
CHECK TABLE应该总是表锁MyISAM或InnoDB的任何表。
您可以使用以下命令创build一个名为/var/lib/mysql/my_init.sql的脚本
CHECK TABLE <whatever table 1>;
CHECK TABLE <无论表2>;
…
这个文件应该包含你想要CHECK TABLE的表的数量。
现在将这一行添加到/etc/my.cnf
init_file =的/ var / lib中/ MySQL的/ my_init.sql
然后重新启动mysql,自定义检查表脚本将运行。
顺便说一句,我希望你正在使用innodb_file_per_table。 如果你不是, 请阅读这个url