執行 mysqldump 備份時遭遇:
mysqldump: Couldn't execute 'SHOW TRIGGERS LIKE 'userlog'': Got error 28 from storage engine (1030)
MySQL 錯誤代碼 28 (OS error code 28) = No space left on device (磁碟空間不足)。儲存引擎在建立臨時表/排序檔案時無法寫入磁碟。
[root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 9.5G 9.1G 0 100% / /dev/sda4 3.2G 70M 3.0G 3% /mnt/backup
根分區 / 已滿 (100%),MySQL 資料目錄通常在 /var/lib/mysql (掛載在 /),無法建立臨時檔案導致備份失敗。
# 清理系統日誌 journalctl --vacuum-time=7d # 清理 apt/yum 快取 apt-get clean # 或 yum clean all # 刪除舊備份/臨時檔 rm -f /tmp/*.sql /var/tmp/* # 遷移大檔案到備份分區 mv /var/log/large.log /mnt/backup/
mysqldump -u root -p db_name > /mnt/backup/db_backup.sql
# my.cnf [mysqld] tmpdir = /mnt/backup/tmp
# 清理後重新備份 mysqldump -u root -p db_name > /mnt/backup/db_backup.sql # 應正常完成
expire_logs_days / binlog_expire_logs_seconds)--single-transaction 減少鎖爭用,但仍需磁碟空間存放輸出核心提醒:Error 28 幾乎總是磁碟滿,而非 MySQL 內部邏輯錯誤。先 df -h,再清理/遷移/擴容,問題即解。