• Imprimir

Lembrando :

Export:

mysqldump -u username –-password=your_password database_name >file.sql

Import:

mysql -u username –-password=your_password database_name < file.sql                                                                                                                                                

 

SCRIPT ATUALIZADO....


 

Nova versão do script de backup

A última estava mandando mensagem quando executava e o crontab parava de executar.

 

Primeiro crie um arquivo com os a string de conexão ao banco.

Segue o "padrão" que tu encontra ai na net.

 

 

[root@SERVIDOR backup]# vi config.cnf

 

[client]

user ='USUARIO DE BAKCUP'

password ='SENHA USUARIO DE BACKUP'

host ='localhost'

 

 

Em seguida crie um arquivo por dia da semana neste exemplo Domingo

Lembrando não podemos imprimir nada na tela oriundo deste executável .sh 

 

exemplo :

 

[root@SERVIDOR backup]# vi Domingo.sh

 

#!/bin/bash

# VARIAVEIS

LOCAL_BAK='/<<DIRETORIO DE BACKUP>>/Domingo'

#  echo @LOCAL_BAK

rm -rf $LOCAL_BAK/*.*

# // gerando e compactando backup

sql_database=$(mysql --defaults-extra-file=config.cnf -Bse 'SHOW DATABASES WHERE `database` != "information_schema" AND `database` != "mysql"  AND `database` !=  "performance_schema" ')

for db in ${sql_database}; do

    cont=$(( $cont + 1 ))

#    echo $db

    mysqldump  --defaults-extra-file=config.cnf --databases $db > $LOCAL_BAK/$db.sql

    gzip $LOCAL_BAK/$db.sql

    rm -rf $LOCAL_BAK/$db.sql

done

 

 

 

Depois Crontab e agende de acordo com o dia :

 

 

[root@slhdbmysql02 backup]# crontab -e

#  .---------------- minute (0 - 59)

 

#  |  .------------- hour (0 - 23)

 

#  |  |  .---------- day of month (1 - 31)

 

#  |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

 

#  |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

 

#  |  |  |  |  |

 

   30 22 *  *  0  cd /var/backup/ && sh /var/backup/Domingo.sh

   30 22 *  *  1  cd /var/backup/ && sh /var/backup/Segunda.sh

   30 22 *  *  2  cd /var/backup/ && sh /var/backup/Terca.sh

   30 22 *  *  3  cd /var/backup/ && sh /var/backup/Quarta.sh

   30 22 *  *  4  cd /var/backup/ && sh /var/backup/Quinta.sh

   30 22 *  *  5  cd /var/backup/ && sh /var/backup/Sexta.sh

   30 22 *  *  6  cd /var/backup/ && sh /var/backup/Sabado.sh

 

 

  Não esqueça de reiniciar o crontab

 

 [root@slhdbmysql02 backup]# service crond restart

 

 

 VOCÊ PODERÁ VERIFICAR O QUE ESTA ACONTECENDO NO CRONTAB UTILIZANDO :

 tail -f /var/log/cron

 

 

Caso você seja um cara prevenido que coloca a manutenção dos bancos no domingo após o backup.

Coloque no arquivo Domingo.sh no final a seguinte linha que realiza a manutenção dos bancos

 

mysqlcheck  --defaults-extra-file=config.cnf --auto-repair --optimize --all-databases

 

 

E edit o crontab ( corntab –e  ) e coloque o direcionamento das mensagens para um arquivo de log

Tipo assim  :

 

   30 22 *  *  0  cd /var/backup/ && sh /var/backup/Domingo.sh >log.bak

 

 

;-)

 

 


 

 

Essa dica veio do TheGingerDog.

Site http://stackoverflow.com/users/86696/thegingerdog

 

Criando um arquivo de configuração fica fácil.

Isto porque quando o crontab enxerga a mensagem de uma senha sendo exposta no mysqldump  ele aborta a execução do script.

mysql --defaults-extra-file=/path/to/config.cnf

ou

mysqldump --defaults-extra-file=/path/to/config.cnf 

Onde config.cnf contém:

[client]
user = whatever
password = whatever
host = whatever

Isso permite que você tenha vários arquivos de configuração - para diferentes servidores / funções / bancos de dados. Usando ~ / .my.cnf só irá permitir que você tenha um conjunto de configuração (embora possa ser um conjunto útil de padrões).

 

 

OBSERVAÇÃO.

 

 

Em caso de duvida vamos lá :

[root@SERVIDOR ~]# crontab -e

 

# For details see man 4 crontabs

# Example of job definition:

#  .---------------- minute (0 - 59)

#  |  .------------- hour (0 - 23)

#  |  |  .---------- day of month (1 - 31)

#  |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

#  |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

#  |  |  |  |  |

#  *  *  *  *  * user-name command to be executed

30 12 *  *  * root /var/backup/script_de_backup.sh

30 22 *  *  * root /var/backup/script_de_backup.sh

35 18 *  *  * rm -rf /var/backup/exp_imp_do_banco.sql

 

36 18 *  *  * mysqldump --defaults-extra-file=/var/backup/config.cnf  --databases << Seu Banco >>   /var/backup/exp_imp_do_banco.sql

 

[root@SERVIDOR ~]#  /bin/systemctl restart  crond.service

[root@SERVIDOR ~]# crontab -l