有时我会从 MYSQL 服务器收到错误:
Lost connection to MySQL server at 'reading initial communication packet', system error: 0
我找不到原因,因为大多数时候它都能正常工作,但每周有几个小时我都会收到此错误。我用谷歌搜索,但似乎只有用户会永久出现此错误。但在这种情况下,它只是偶尔发生。我检查了 hosts.allow 和 hosts.deny,但主机被允许而不是被拒绝。
有时我也会收到错误:
File './database/table.MYD' not found (Errcode: 24)
这种情况很少发生。但每周都会发生一次,每次持续几个小时,有时甚至连续几天,但问题突然又消失了。我检查了打开文件数限制。它是 2048,绝对足够了。尽管如此,我还尝试增加打开文件数,但没有效果。我想,也许该过程没有关闭某些表。但这是不可能的,因为过了一会儿,一切都恢复正常,并且该过程一次最多打开 100 个表。我还检查了 MySQL 运行时环境,有 930 个打开的文件。我无法解释这一点。过了一会儿,它变成了 129。
我在 SUSE-Linux 机器上运行 MySQL 服务器。我通过命令行工具“mysql”和 MySQL-C-connector 从另一台主机连接到 MySQL 服务器。MySQL 服务器的版本是 5.0.67。
答案1
现在问题已经解决。
事实证明,我们的备份程序“mysqlhotcopy”存在问题。
原因是,据我所知,当不使用数据库参数调用时,mysqlhotcopy 会在一条语句中锁定所有数据库的所有表;当使用数据库参数调用时,则会锁定一个数据库的所有表。由于我们的数据库可能包含数千个表,因此在我们当前的系统配置下,这是不可能的。
所以我编写了一个新的 mysqlhotcopy 脚本,到现在这个问题已经消失了。