Backup automático do banco de dados Mysql para o servidor Amazon s3 usando script e crontab

0

Eu sou novo neste conceito, então alguém pode me orientar sobre os detalhes do código de script e o uso adequado do crontab enquanto faz o backup do banco de dados para o servidor amazon s3 no momento desejado. Eu passei por links diferentes, mas nenhum deles explicou como o backup acontece. E eu estou usando 14.04lts do Ubuntu.

    
por darshan krishnaiah 13.07.2016 / 09:18

2 respostas

0

Algumas noções básicas

cron

Um usuário pode utilizar o utilitário crontab para editar seu crontab. O daemon cron consumirá todos os crontabs e executará os comandos no intervalo definido. Uma entrada crontab basicamente se parece com isso:

* * * * * /path/to/some/command

backup do mysql

Backup de um banco de dados mysql pode ser obtido através de vários métodos; dependendo do mecanismo do banco de dados e da quantidade de dados, diferentes ferramentas e variantes são aplicáveis. A maneira mais básica de fazer backup de um banco de dados seria usar mysqldump :

# mysqldump -u USERNAME -pPASSWORD -h HOSTNAME -P PORTNUMBER DATABASENAME > DATABASENAME.sql

Como fazer backup do MySQL usando o Cron

Para fazer backups em todas as noites de sábado às 22h, use essas duas ferramentas juntas (e, além disso, transfira-as para s3) para formar uma entrada crontab como esta:

00 10 * * 1 /usr/bin/mysqldump -u USERNAME -pPASSWORD -h HOSTNAME -P PORTNUMBER DATABASENAME > DATABASENAME_$(date '+%F').sql && aws s3 cp DATABASENAME_$(date '+%F').sql s3://BUCKETNAME/db_backups/DATABASENAME_$(date '+%F').sql
    
por Phillip -Zyan K Lee- Stockmann 13.07.2016 / 09:34
0

Supondo que você tenha instalado o aws-cli (e a máquina tem uma função do IAM com permissão para fazer upload no S3) e o mysqldump na máquina que você quer executar o cron job, esta é a maneira que eu faço:

mysqldump --defaults-file="path_to_config_file_with_password" -u db_user -h db_hostname db_name_you_need_backup | gzip -9 > db_name.sql.gz;
now=$(date +"%m_%d_%Y")
aws s3 cp db_name.sql.gz s3://bucket_name/dbs/db_name_$now.sql.gz
    
por Conti 13.07.2016 / 09:31