mysqldump:写错了32

Mul*_*gno 36 mysql ubuntu mysqldump

我在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}
Run Code Online (Sandbox Code Playgroud)

现在我要搬到另一个托管.我正在尝试使用相同的脚本(当然我用新凭据更改了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
Run Code Online (Sandbox Code Playgroud)

nos*_*nos 40

20:47:59 0 ~] $ perror 32
OS error code  32:  Broken pipe
Run Code Online (Sandbox Code Playgroud)

所以errno 32是"破管".你正在管道mysqldump输出gzip,所以这意味着gzip在mysqldump完成之前终止.例如,因为您的磁盘已满,或者gzip超过了主机所具有的最大CPU时间/使用量.

  • @nos 再次提醒大家,CPU 限制确实是我在 AWS 上遇到的问题。我通过“nice”转储解决了这个问题。 (2认同)

小智 9

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


But*_*kus 8

由于一些错别字,我遇到了同样的问题.

  1. 我错误地输入了db用户的名字."db_user_1"当他真的,我有"db_user1".

  2. 管道后,我忘了>gzip > myfile.tar.gz.

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

在StackOverflow上查看此答案.