我编写了一个 shell 脚本来备份 mysql 所有数据库。除了这个错误之外,该脚本没有任何问题“mysqldump:使用 LOCK TABLES 时出现错误:1017:找不到文件:‘drupal_install_test’(errno:2)”
请帮忙解决这个问题。
提前致谢。
答案1
当您的文件系统达到其上限时,大型数据库通常会弹出此类错误open files limit
。通常,MySQL 会从您的操作系统采用此值,因此这取决于上限是多少。您可以使用查询来检查它:SHOW VARIABLES LIKE 'open_files_limit'
,该查询可能会返回如下内容:
mysql> SHOW VARIABLES LIKE 'open_files_limit';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 1024 |
+------------------+-------+
根据您使用的存储引擎,单个表可以使用磁盘上最多 2 或 3 个文件(例如 .FRM、.MYI 和 .MYD),因此如果您的数据库有超过 512 或 341 个表,它就会阻塞。
现在,由于您在问题中标记了debian
,我假设这是在 Debian 服务器上。您可以使用以下命令提高限制:
ulimit -n XXXX
新的限制在哪里XXXX
,比如 2048(不要太极端!)。如果这不起作用或没有永久保存,您可能需要编辑该/etc/security/limits.conf
文件。
答案2
您使用 mysqldump -A 备份了吗?您在 mysql 数据目录中没有旧的 drupal 安装脚本吗?
答案3
尝试-Fmysqldump 选项