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