執行 mysqldump 備份整庫時,若遇到 Got error: 1105: File './db/data_20070901.MYD' not found (Errcode: 24),且單表備份正常、SELECT 查詢無誤,大概率是作業系統層面的「打開檔案數過多」導致。
mysqldump 失敗,單表成功,資料檔案實際存在。perror 24 得到 OS error code 24: Too many open files。open_files_limit 過小(通常 1024),大量表備份時並發打開 .MYD/.MYI/.frm 檔案超過限制。[mysqld]
open_files_limit = 65535 # 建議設為 65535 或更高,視 OS ulimit 而定
關鍵步驟:
/etc/my.cnf(或 /etc/mysql/my.cnf),在 [mysqld] 區塊新增上述參數。ulimit -n 若小於設定值,需同步修改 /etc/security/limits.conf:mysql soft nofile 65535mysql hard nofile 65535systemctl restart mysqld。SHOW GLOBAL VARIABLES LIKE 'open_files_limit';。/etc/systemd/system/mysqld.service.d/limits.conf 設定 LimitNOFILE=65535,並執行 systemctl daemon-reload。open_files_limit 實際生效值受 max_connections、table_open_cache 影響,MySQL 會自動取最大值,建議同步調大 table_open_cache(如 4000+)。調整後再次執行 mysqldump,錯誤即可徹底消除。此類 OS 層資源限制問題,還常出現在大量連線、大量分區表場景,建議納入上線前檢核清單。