Se você estiver executando mysqldump
remotamente e quiser um arquivo de despejo separado para cada banco de dados, será necessário manter uma lista dos bancos de dados dos quais deseja fazer backup. Se você executar mysqldump
localmente no servidor de banco de dados, poderá percorrer os bancos de dados existentes no diretório mysql
data (como /var/lib/mysql
). Se mysqldump
tiver que ser executado remotamente, você poderá escrever um script que se conecte via SSH, recupere uma lista dos bancos de dados e, em seguida, desconecte e execute mysqldump
com os nomes dos bancos de dados.
Eu não usaria --all-databases
sem especificar nomes de bancos de dados individuais e, adicionalmente, usaria a opção --add-drop-database
. Isso também incluirá instruções SQL no arquivo de despejo para criar o banco de dados, se ele não existir, ou eliminar o banco de dados, se existir e recriá-lo. De man 1 mysqldump
:
--add-drop-database
Add a DROP DATABASE statement before each CREATE DATABASE statement.
This option is typically used in conjunction with the --all-databases
or --databases option because no CREATE DATABASE statements are written
unless one of those options is specified.
Este é um script rápido e sujo projetado para ser executado localmente no servidor de banco de dados que fará backup dos bancos de dados especificados na variável $DB
, resultando em um arquivo de despejo para cada banco de dados. Ele também remove os arquivos de dumps anteriores com mais de 15 dias.
#!/bin/sh
PATH=/bin:/usr/bin
DATE="'date +%Y%m%d'"
DB="mysql drupal drupaldev"
DUMP_DIR="/u01/mysql_dump"
for db in 'echo $DB'
do
mysqldump -u root --password=password --databases --add-drop-database $db > $DUMP_DIR/$db.$DATE.dmp
gzip -9 $DUMP_DIR/$db.$DATE.dmp
find $DUMP_DIR/* -mtime +14 -exec rm -f '{}' \;
done