O script shell do mysqldump funciona bem quando executado manualmente, mas não é executado na tarefa cron?

4

Eu tenho um script de shell para obter um despejo de banco de dados MySQL. Este script funciona bem quando executado manualmente

#!/bin/sh
fqn=/home/Mysqluser/daily_dumps/bookstore_'date +%Y%m%d_%H%M%S'.sql.gz
mysqldump -u root -h localhost -pmysql#passwd bookstore | gzip > $fqn

Mas quando incluo esse script para ser executado no cron job, ele não faz o backup.

Isso é o que incluí no trabalho cron:

00 00 * * *  /home/Mysqluser/daily_dumps/bin/backup_database.sh

O que estou perdendo aqui?

    
por user120612 29.02.2012 / 08:06

2 respostas

0

Provavelmente, porque o (s) ambiente (s) (tipo env no prompt para vê-lo) é diferente.

Eu tive problema semelhante ao tentar executar uma consulta mysql no cron.daily, resolvi-o adicionando este sinalizador --defaults-file=/root/.my.cnf

Parece que o mysqldump tem um sinalizador similar --defaults-extra-file (precisa ser o primeiro argumento), mas se isso não funcionar, tente descobrir qual é a diferença entre o seu ambiente de linha de comando e o ambiente do cron. Crie um cronjob que imprima a saída de env em um arquivo e compare-o com o que você obtém ao executá-lo a partir do seu shell.

    
por 29.02.2012 / 09:00
0

Além disso, certifique-se de que mysqldump esteja no $PATH ao executar a partir do cron. Uma prática recomendada é definir $PATH diretamente no seu script ou especificar caminhos completos para todos os comandos que são invocados (por exemplo, /usr/bin/mysqldump ).

    
por 11.02.2015 / 17:48