Backup de bancos de dados com o cron

1

Estou tentando configurar um cron job para fazer backup dos meus bancos de dados diariamente. Aqui está o que eu escrevi no meu arquivo crontab:

25 18 * * * root mysqldump -u root -p myPassWord --all-databases | gzip > /var/backup/database_'date '+%m-%d-%Y''.sql.gz 

Como nada aconteceu às 18:25, eu dei uma olhada no meu arquivo /var/log/syslog (o servidor está no Debian) aqui está o que eu encontrei:

Jan 24 18:25:01 ns311475 /USR/SBIN/CRON[16252]: (root) CMD (/usr/local/ispconfig/server/server.sh 2>&1 > /dev/null | while read line; do echo '/bin/date' "$line" >> /var/log/ispconfig/cron.log; done)
Jan 24 18:25:01 ns311475 /USR/SBIN/CRON[16253]: (getmail) CMD (/usr/local/bin/run-getmail.sh > /dev/null 2>> /dev/null)
Jan 24 18:25:01 ns311475 dovecot: imap-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=127.0.0.1, lip=127.0.0.1, secured, session=<3xFlL2kNAAB/AAAB>
Jan 24 18:25:01 ns311475 dovecot: pop3-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=127.0.0.1, lip=127.0.0.1, secured, session=<rhRlL2kNvwB/AAAB>
Jan 24 18:25:01 ns311475 postfix/smtpd[16279]: connect from localhost.localdomain[127.0.0.1]
Jan 24 18:25:01 ns311475 postfix/smtpd[16279]: lost connection after CONNECT from localhost.localdomain[127.0.0.1]
Jan 24 18:25:01 ns311475 postfix/smtpd[16279]: disconnect from localhost.localdomain[127.0.0.1]

Eu não entendo a primeira linha, presumo que o resto está tentando enviar um e-mail para o problema, mas não consegui nada.

    
por Dave 24.01.2015 / 18:51

2 respostas

1

O Debian tem um pacote para você cuidar de descarregar, compactar e girar dados MySQL. Você pode instalá-lo com o seguinte comando:

$ sudo apt-get install automysqlbackup

Depois disso, os despejos diários, semanais e mensais serão colocados em / var / lib / automysqlbackup

    
por 25.01.2015 / 00:41
2

Leia o bom manual: man 5 crontab : Lá você verá que "%" tem um significado especial para o cron.

Isso está agitando seu comando pretendido.

Além disso, esta é uma maneira muito ruim de iniciar um backup mySQL:

  • Sua senha do banco de dados raiz será exibida na lista de processos visível para todos os usuários locais ou para todos os usuários com acesso de leitura snmp
  • Você não deve iniciar um subshell em um shell sem motivo aparente. Use "$ (command)" em seu lugar.
  • O gzip só usa uma CPU. Então essa parte vai desacelerar todo o seu backup

Você deve:

  • Coloque sua senha do banco de dados raiz em um arquivo (.mysql - algo que não lembro a sintaxe e o nome exatos desse arquivo) na pasta-raiz, acessível apenas pelo root. Isso ativará o login automático da raiz com a senha para mySQL
  • Coloque o que você está fazendo em um script próprio em / usr / local / sbin (provavelmente apenas legível para root e um grupo confiável)
  • Chame esse script pelo cron.
  • Use os caminhos completos para todos os comandos nesse script. O Cron pode não ser executado em um ambiente com todos os caminhos "habituais" definidos
  • use pgzip ou, se você tiver o espaço disponível, faça a compactação após o backup ser feito
por 24.01.2015 / 22:26