como criar um script para backup de bancos de dados MySQL em arquivos separados?

2

Eu preciso criar um script para automatizar o processo de backup do meu servidor de banco de dados. Hoje existem 19 bancos de dados no servidor e para evitar que algum esquema seja criado e não contemplado pelo script, eu gostaria que ele fizesse backup de todos os bancos de dados listados pela consulta "show schemas".

Minha idéia é que cada esquema seja despejado duas vezes (ou seja, às 0h00 e às 12h00) por dia, compactado e salvo na pasta /home/{user}/database_backup/daily/[day_of_week] .

Uma vez por semana, todas as pastas [day_of_week] são compactadas e salvas em /home/{user}/database_backup/weekly/[week_of_month] .

Por fim, uma vez por mês, todos os [week_of_month] serão compactados e salvos em /home/{user}/database_backup/monthly/ e deixados lá para que outro aplicativo possa fazer o backup em fita.

Hoje, esse aplicativo de backup em fita faz o backup de /var/lib/mysql diariamente, mas deve ser necessário, restaurar esses arquivos ou usá-los em um servidor de banco de dados diferente é um pouco difícil.

Eu sei que esta é uma questão muito aberta, mas a ajuda é, como sempre, apreciada.

    
por gtludwig 20.03.2013 / 16:05

1 resposta

1

Você pode percorrer todos os bancos de dados em um servidor e exportá-los um a um como este em um script de shell:

#!/bin/sh
HOSTNAME='localhost'
MYSQLUSER='root'
MYSQLPASS='xyz'
for DB in $(mysql -h $HOSTNAME -u $MYSQLUSER --password=${MYSQLPASS} --batch --skip-column-names --execute="show databases");
do
    local FILENAME=${HOSTNAME}_Database_${DB}.sql.gz
    mysqldump $DB -h $HOSTNAME -u $MYSQLUSER --password=${MYSQLPASS} --triggers --routines --event | gzip -c > $FILENAME
done
    
por 30.08.2016 / 12:02