Script crontab do Linux para “mysqldump | gzip ”dá tamanho errado

0

Eu tenho um script bin / bash que mysqldumps meu banco de dados sql, quando eu executo tudo vai bem com o tamanho do arquivo = 3MB, mas quando crontab (como sudo) executa o script, o tamanho do arquivo é 20B

script

#!/bin/bash
cd /home/blades/backup/databases
DATE=$(date +"%d-%m-%Y_%H:%M:%S")
mysqldump -u username -h localhost database --single-transaction | gzip -9 > database.sql_$DATE.gz

e sudo crontab -e

30 04 * * * /home/blades/backup/backup

O que estou fazendo errado?

    
por blades 22.08.2013 / 17:52

3 respostas

0

ok eu consegui resolvê-lo, no arquivo .my.cnf eu tive que especificar mysqldump e client, não só mysqldump então o arquivo .my.cnf é (depois disso chmod para 400)

[client]
user=aaaaaaaaaaaaa
password=xxxxxxxxxxxx

[mysqldump]
user=aaaaaaaaaaaaa
password=xxxxxxxxxxxx

a outra questão é que as opções devem ser primeiro, em seguida, localhost etc então o script é assim

/usr/bin/mysqldump --defaults-file=/home/username/.my.cnf --single-transaction -h localhost database_name | gzip -9 > database_name.sql_$DATE.gz

É isso aí, obrigado por ajudar mesmo assim

    
por 25.08.2013 / 10:27
1

Você precisa registrar seu erro dizendo "

"
2>/tmp/mysqldump.log 

para descobrir qual é o erro.

O mais provável é que o seu ambiente cron não tenha o PATH configurado corretamente. Portanto, a primeira coisa que você pode fazer é adicionar o caminho completo aos seus comandos mysqldump e gzip , o que provavelmente resolverá seu problema.

Se não, basta examinar o log de erros.

    
por 22.08.2013 / 17:57
0

Tente adicionar o caminho completo do mysqldump. /usr/bin/mysqldump -u username -h localhost database --single-transaction | gzip -9 > database.sql_$DATE.gz

(/ usr / bin / mysqldump é um exemplo. Pode estar em outro lugar no seu sistema). Os scripts que são executados a partir do crontab são executados em outro "lugar" e não definem a definição atual do usuário $ PATH. Seu usuário atual provavelmente tem mysqldump path definido em sua variável ambiental $ PATH, é por isso que quando você executa o script manualmente funciona sem problemas. O mesmo se aplica a gzip .

    
por 22.08.2013 / 18:04

Tags