programación de tareas de Windows 7 / mysqldump

programación de tareas de Windows 7 / mysqldump

Creé un archivo por lotes para crear un volcado de una base de datos y guardarlo en un archivo con la fecha actual como parte del nombre del archivo. El archivo por lotes funciona de manera brillante y todos los datos se guardan correctamente.

Ahora intenté configurar una tarea programada para hacer esto semanalmente, pero me encontré con un problema: aunque la tarea se ejecuta, el archivo que crea está vacío, como si no hubiera extraído ningún dato de la base de datos remota. Sé que es bastante vago, pero ¿alguien puede decirme dónde empezaría a buscar una razón/solución?

** EDITAR **

Bien, más progreso: parece que podría ser un problema de ruta. Puse una pausa en el archivo por lotes y, cuando lo ejecuto en el programador de tareas, dice: 'mysqldump no es un programa reconocido'. Sin embargo, cuando se ejecuta a través de la línea de comando en mi cuenta de usuario, funciona bien; Solo para confirmar, lo configuré para que se ejecute en la misma cuenta de usuario en la que lo he estado probando.

** EDITAR 2 **

Encontré una especie de solución: tuve que referir la aplicación mysqldump por su ruta absoluta. Sin embargo, todavía no puedo entender por qué puede encontrar mysqldump en la ruta cuando se ejecuta directamente desde la línea de comandos, pero no cuando se automatiza a través del programador de tareas.

Respuesta1

¿Quizás la red no estaba disponible? Puede intentar programarlo para que se ejecute cada 5/10 minutos y ver si los comandos/variables funcionan correctamente. ¿Está seguro de que el script se ejecuta correctamente cuando se ejecuta como un todo y no solo un comando a la vez?


En su edición 2: Parece que mysqldump no está presente en las PATHvariables de entorno. Intente agregar eso e inténtelo de nuevo.

Respuesta2

¿Ha intentado ejecutar mysqldump (en su tarea programada) en modo detallado? (--verboso)

Además, tal vez observe con qué usuario se ejecuta su tarea, asegúrese de que el usuario tenga permisos para ejecutar mysqldump y crear un archivo en el directorio de destino.

Respuesta3

  1. Si dar una ruta absoluta resolvió su problema, no es posible crear un archivo vacío. En cambio, ningún archivo creado con el registro del programador de Windows muestra que el trabajo se realizó correctamente.

  2. Su secuencia de comandos podría funcionar en la línea de comando, si la variable de ruta contiene la información de la ruta a mysqldump.exe. Compruébelo dando el comando "ruta" a la línea de comando.

  3. Para su referencia, aquí hay un archivo por lotes de muestra que he usado para la copia de seguridad de MySQL.

@eco apagado
ESTABLECER DB_USER_ID=[identificador]  
SET DB_USER_PASS=[contraseña]
SET DATABASE=[nombre de la base de datos]
SET EXP_PATH=[ruta de respaldo]
SET EXP_TMP_PATH=[ruta temporal]
SET FILE_NAME=[nombre del archivo de copia de seguridad]
Para /f "tokens=1-3 delims=- " %%a en ('fecha /t') hacer (establecer hoy=%%a-%%b-%%c)

del /S /Q %EXP_PATH%
md %EXP_PATH%
md %EXP_TMP_PATH%

C:\Bitnami\redmine-2.5.2-0\mysql\bin\mysqldump.exe -u%DB_USER_ID% -p%DB_USER_PASS% %DATABASE% > %EXP_TMP_PATH%\%FILE_NAME%_%today%.sql
mover %EXP_TMP_PATH%\%FILE_NAME%_%today%.sql %EXP_PATH%\%FILE_NAME%_%today%.sql

información relacionada