当前位置: 首页>>技术教程>>正文


mysqldump:在写入时出现errno 32

, ,

问题描述

我在VPS上使用了多年的脚本。而且它仍然在工作。

DBLIST=`mysql -uroot -pROOT_PASSWORD -ANe"SELECT GROUP_CONCAT(schema_name) FROM information_schema.schemata WHERE schema_name NOT IN ('information_schema','performance_schema')" | sed 's/,/ /g'`
MYSQLDUMP_OPTIONS="-uroot -pROOT_PASSWORD --single-transaction --routines --triggers"
BACKUP_DEST="/home/backup/db/"
for DB in `echo "${DBLIST}"`
do
    mysqldump ${MYSQLDUMP_OPTIONS} ${DB} | gzip > ${BACKUP_DEST}/${DB}.sql.gz &
done
wait
tar -czvf /home/backup/db2/`date +\%G-\%m-\%d`_db.tar.gz ${BACKUP_DEST}

现在,我要移到另一个主机。我正在尝试使用相同的脚本(当然,我用新的凭据更改了ROOT_PASSWORD),但我不知道为什么得到这个:

mysqldump: Got errno 32 on write
mysqldump: Got errno 32 on write
mysqldump: Got errno 32 on write
mysqldump: Got errno 32 on write
mysqldump: Got errno 32 on write
mysqldump: Got errno 32 on write
mysqldump: Got errno 32 on write
mysqldump: Got errno 32 on write
mysqldump: Got errno 32 on write
mysqldump: Got errno 32 on write
mysqldump: Got errno 32 on write
mysqldump: Got errno 32 on write
mysqldump: Got errno 32 on write

最佳答案

20:47:59 0 ~] $ perror 32
OS error code  32:  Broken pipe

所以errno 32是”broken pipe”。您正在将mysqldump输出传递到gzip,因此这意味着gzip在mysqldump完成之前终止。可以例如是因为您的磁盘已满,或者gzip超过了主机已达到的任何最大CPU时间/使用率。

次佳答案

确保文件夹/home /backup /db /(用于存储备份的文件夹)具有写访问权限(快速检查:尝试在该文件夹上使用chmod -R 777并运行脚本以确保)。

第三种答案

由于几次错字,我也遇到了同样的问题。

  1. 我输入的数据库用户名不正确。当他真的是"db_user1"时,我有"db_user_1"

  2. 在管道之后,我忘记了gzip > myfile.tar.gz中的>

但是我建议您尽快升级到MySQL 5.6+,这样就可以停止向其他用户公开数据库密码。

在StackOverflow上查看this answer

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8319.html,未经允许,请勿转载。