single - mysqldump: tengo errno 32 en escritura
mysqldump--no-data (11)
Ante el mismo problema. No sé exactamente por qué, pero si agrega la utilidad, PV concluyó que todo funciona. Tal vez depende de tu shell bash / sh.
sudo apt-get install pv
PipeViewer es una utilidad muy útil, le permite visualizar procesos de escritura en el disco, por ejemplo.
Script por ejemplo
mysqldump ${MYSQLDUMP_OPTIONS} ${DB} | gzip | pv > ${BACKUP_DEST}/${DB}.sql.gz
Utilicé este script durante años en mi VPS. Y sigue funcionando.
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}
Ahora me mudo a otro hosting. Estoy intentando usar el mismo script (por supuesto, cambié ROOT_PASSWORD con las nuevas credenciales) pero no sé por qué obtengo esto:
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
Asegúrese de que la carpeta / home / backup / db / (que está utilizando para almacenar la copia de seguridad) tenga permiso de escritura (para una revisión rápida: intente usar chmod -R 777 en esa carpeta y ejecute el script para asegurarse).
Compruebe si la carpeta existe en su ubicación, / home / backup / db /
Si no, crea cada subcarpeta.
Comando: mkdir / home / backup / db /
luego ejecute su comando de nuevo.
Errno 32 es "tubería rota", por lo que cualquier error que ocurra con el destino de la tubería (en este caso, gzip) causará el error 32. Si la estructura del directorio ha cambiado y su ${BACKUP_DEST}
ya no hace referencia a un directorio que existe este problema ocurriría.
Debería depurar esto canalizando otra cosa a su comando gzip o creando una copia de seguridad sin comprimir que no implique gzip.
Es un tema tan viejo, pero estoy enfrentando ese problema y encuentro que:
mi nombre de archivo: db_26 / 03.tar.gz está generando un error como el anterior; pero cuando hago: db.tar.gz no hay error.
Así que debes comprobar tu nombre de archivo
Estaba usando mysqldump
de la CLI e intentaba canalizar a gzip y / o un archivo y obtenía un error de "permiso denegado".
Incluso como sudo
, recibía un error porque, aunque estaba ejecutando mysqldump
como sudo
, la canalización aún intentaba usar la cuenta de usuario en la que había iniciado sesión en el shell para escribir la salida. En este caso, mi cuenta de usuario shell no tenía permisos para escribir en el directorio de destino.
Para solucionar esto, puede usar el comando tee
junto con sudo
:
mysqldump --single-transaction --routines --events --triggers --add-drop-table --extended-insert -u backup -h 127.0.0.1 -p --all-databases | gzip -9 | sudo tee /var/backups/sql/all_$(date +"%Y_week_%U").sql.gz > /dev/null
El | sudo tee /var/backups/...
| sudo tee /var/backups/...
es lo que nos permite canalizar a un directorio que solo se puede escribir por root
. El > /dev/null
suprime el tee
de volcar su salida directamente a la pantalla.
Estaba viendo este error, al canalizar la salida de mysqldump a s3cmd. Fue causado por el uso de la versión incorrecta de s3cmd. En Ubuntu Trusty y Debian Wheezy, la versión empaquetada del comando s3cmd no admite stdin (porque tienen la versión 1.1.0).
Lo que me ayudó con este problema es
export LANG=C
antes de ejecutar mysqldump en https://github.com/netz98/n98-magerun/issues/771
Me sorprendió que no pudiera hacer un volcado de mi DB, pude hacerlo el día anterior. Ahora, estaba recibiendo este error.
Como hemos dicho, el mensaje de error significa Tubería rota, lo que significa que la salida no se puede escribir en el disco. En mi caso, mi usuario de SSH no tenía permiso para escribir en la carpeta que estaba seleccionando en mi instrucción mysqldump.
Puede mostrar su volcado en su directorio / home / your_user para ver que aún recibe el mismo error. Al hacerlo resolví mi problema.
Tuve el mismo problema debido a un par de errores tipográficos.
1.) Escribí el nombre del usuario de la base de datos incorrectamente. Tenía "db_user_1" cuando en realidad era "db_user1".
2.) Después de la tubería olvidé que >
in tenía gzip > myfile.tar.gz
.
Pero le recomiendo que actualice a mysql 5.6+ lo antes posible, para que pueda dejar de exponer las contraseñas de la base de datos a otros usuarios.
Echa un vistazo a esta respuesta en .
20:47:59 0 ~] $ perror 32
OS error code 32: Broken pipe
Así que errno 32 es "tubo roto". Estás canalizando la salida de mysqldump a gzip
, por lo que esto significa que gzip terminó antes de que mysqldump terminara. Podría ser, por ejemplo, porque su disco está lleno, o gzip superó el tiempo / uso máximo de CPU que tiene su host.