Se você for um administrador de banco de dados (DBA ) ou são responsáveis por manter, fazer backup e restaurar bancos de dados, você sabe que não pode perder dados. O motivo é simples:perder dados não significa apenas a perda de informações importantes, mas também pode prejudicar financeiramente o seu negócio.
Por esse motivo, você deve sempre certificar-se de que:
1. é feito backup de seus bancos de dados periodicamente,
2. esses backups são armazenados em um local seguro e
3. você realiza brocas de restauração regularmente.
Esta última atividade não deve ser negligenciada, pois você não quer se deparar com um grande problema sem ter praticado o que precisa ser feito em tal situação.
Neste tutorial, apresentaremos dois bons utilitários para fazer backup do MySQL / MariaDB e PostgreSQL bancos de dados, respectivamente:automysqlbackup e autopostgresqlbackup .
Como o último é baseado no primeiro, focaremos nossa explicação em automysqlbackup e destaque as diferenças com autopgsqlbackup , se houver.
É altamente recomendável armazenar os backups em um compartilhamento de rede montado no diretório de backup para que, no caso de uma falha em todo o sistema, você ainda esteja coberto.
Leia os seguintes guias úteis sobre MySQL:
Comandos básicos de administração de banco de dados MySQLComandos de backup e restauração MySQL para administração de banco de dadosphpMyBackupPro – uma ferramenta de backup MySQL baseada na WebMySQLDumper:uma ferramenta de backup de banco de dados MySQL baseada em PHP e Perl15 Perguntas básicas de entrevista sobre MySQL para administradores de banco de dados
Instalando bancos de dados MySQL / MariaDB / PostgreSQL
1. Este guia pressupõe que você deve ter MySQL / MariaDB / PostgreSQL instância em execução, caso contrário, instale os seguintes pacotes:
Distribuições baseadas no Fedora:
# yum update && yum install mariadb mariadb-server mariadb-libs postgresql postgresql-server postgresql-libs
Debian e derivados:
# aptitude update && aptitude install mariadb-client mariadb-server mariadb-common postgresql-client postgresql postgresql-common
2. Você tem um MySQL de teste / MariaDB / PostgreSQL banco de dados que você pode usar (é aconselhável NÃO use o automysqlbackup ou autopostgresqlbackup em um ambiente de produção até que você se familiarize com essas ferramentas).
Caso contrário, crie dois bancos de dados de amostra e preencha-os com dados antes de continuar. Neste artigo usarei os seguintes bancos de dados e tabelas:
MySQL/MariaDB
CREATE DATABASE mariadb_db; CREATE TABLE tecmint_tbl (UserID INT AUTO_INCREMENT PRIMARY KEY, UserName VARCHAR(50), IsActive BOOL);PostgreSQL
CREATE DATABASE postgresql_db; CREATE TABLE tecmint_tbl ( UserID SERIAL PRIMARY KEY, UserName VARCHAR(50), IsActive BOOLEAN);
Instalando automysqlbackup e autopgsqlbackup no CentOS 7 e Debian 8
3. No Debian 8 , ambas as ferramentas estão disponíveis nos repositórios, portanto, instalá-las é tão simples quanto executar:
# aptitude install automysqlbackup autopostgresqlbackup
Enquanto no CentOS 7 você precisará baixar os scripts de instalação e executá-los. Nas seções abaixo, focaremos exclusivamente na instalação, configuração e teste dessas ferramentas no CentOS 7 já que para o Debian 8 – onde eles quase funcionam fora da caixa, faremos os esclarecimentos necessários mais adiante neste artigo.
Instalando e configurando o automysqlbackup no CentOS 7
4. Vamos começar criando um diretório de trabalho dentro de
/opt
para baixar o script de instalação e executá-lo:# mkdir /opt/automysqlbackup # cd /opt/automysqlbackup # wget http://ufpr.dl.sourceforge.net/project/automysqlbackup/AutoMySQLBackup/AutoMySQLBackup%20VER%203.0/automysqlbackup-v3.0_rc6.tar.gz # tar zxf automysqlbackup-v3.0_rc6.tar.gz # ./install.sh
.
5. O arquivo de configuração para automysqlbackup está localizado dentro de /etc/automysqlbackup sob o nome meuservidor.conf . Vamos dar uma olhada nas diretivas de configuração mais relevantes:
myserver.conf – Configure o Automysqlbackup
# Username to access the MySQL server CONFIG_mysql_dump_username='root' # Password CONFIG_mysql_dump_password='YourPasswordHere' # Host name (or IP address) of MySQL server CONFIG_mysql_dump_host='localhost' # Backup directory CONFIG_backup_dir='/var/backup/db/automysqlbackup' # List of databases for Daily/Weekly Backup e.g. ( 'DB1' 'DB2' 'DB3' ... ) # set to (), i.e. empty, if you want to backup all databases CONFIG_db_names=(AddYourDatabase Names Here) # List of databases for Monthly Backups. # set to (), i.e. empty, if you want to backup all databases CONFIG_db_month_names=(AddYourDatabase Names Here) # Which day do you want monthly backups? (01 to 31) # If the chosen day is greater than the last day of the month, it will be done # on the last day of the month. # Set to 0 to disable monthly backups. CONFIG_do_monthly="01" # Which day do you want weekly backups? (1 to 7 where 1 is Monday) # Set to 0 to disable weekly backups. CONFIG_do_weekly="5" # Set rotation of daily backups. VALUE*24hours # If you want to keep only today's backups, you could choose 1, i.e. everything older than 24hours will be removed. CONFIG_rotation_daily=6 # Set rotation for weekly backups. VALUE*24hours. A value of 35 means 5 weeks. CONFIG_rotation_weekly=35 # Set rotation for monthly backups. VALUE*24hours. A value of 150 means 5 months. CONFIG_rotation_monthly=150 # Include CREATE DATABASE statement in backup? CONFIG_mysql_dump_create_database='no' # Separate backup directory and file for each DB? (yes or no) CONFIG_mysql_dump_use_separate_dirs='yes' # Choose Compression type. (gzip or bzip2) CONFIG_mysql_dump_compression='gzip' # What would you like to be mailed to you? # - log : send only log file # - files : send log file and sql files as attachments (see docs) # - stdout : will simply output the log to the screen if run manually. # - quiet : Only send logs if an error occurs to the MAILADDR. CONFIG_mailcontent='quiet' # Email Address to send mail to? ([email protected]) CONFIG_mail_address='root' # Do you wish to encrypt your backups using openssl? #CONFIG_encrypt='no' # Choose a password to encrypt the backups. #CONFIG_encrypt_password='password0123' # Command to run before backups (uncomment to use) #CONFIG_prebackup="/etc/mysql-backup-pre" # Command run after backups (uncomment to use) #CONFIG_postbackup="/etc/mysql-backup-post"
Depois de configurar o automysqlbackup de acordo com suas necessidades, é altamente recomendável verificar o README arquivo encontrado em /etc/automysqlbackup/README .
Backup do banco de dados MySQL
6. Quando estiver pronto, vá em frente e execute o programa, passando o arquivo de configuração como argumento:
# automysqlbackup /etc/automysqlbackup/myserver.conf
Uma rápida inspeção do diário irá mostrar que automysqlbackup foi executado com sucesso:
# pwd # ls -lR daily
Claro que você pode adicionar uma entrada crontab para executar o automysqlbackup na hora do dia que melhor se adapte às suas necessidades (1:30 sou todos os dias no exemplo abaixo):
30 01 * * * /usr/local/bin/automysqlbackup /etc/automysqlbackup/myserver.conf
Restaurando um backup do MySQL
7. Agora vamos descartar o mariadb_db banco de dados de propósito:
Vamos criá-lo novamente e restaurar o backup. No prompt do MariaDB, digite:
CREATE DATABASE mariadb_db; exit
Em seguida, localize:
# cd /var/backup/db/automysqlbackup/daily/mariadb_db # ls
E restaure o backup:
# mysql -u root -p mariadb_db < daily_mariadb_db_2015-09-01_23h19m_Tuesday.sql # mysql -u root -p MariaDB [(none)]> USE mariadb_db; MariaDB [(none)]> SELECT * FROM tecmint_tb1;
Instalando e configurando o autopostgresqlbackup no CentOS 7
8. Para que o autopostgresql para funcionar perfeitamente no CentOS 7 , precisaremos instalar algumas dependências primeiro:
# yum install mutt sendmail
Então vamos repetir o processo como antes:
# mkdir /opt/autopostgresqlbackup # cd /opt/autopostgresqlbackup # wget http://ufpr.dl.sourceforge.net/project/autopgsqlbackup/AutoPostgreSQLBackup/AutoPostgreSQLBackup-1.0/autopostgresqlbackup.sh.1.0 # mv autopostgresqlbackup.sh.1.0 /opt/autopostgresqlbackup/autopostgresqlbackup.sh
Vamos tornar o script executável e iniciar / ativar o serviço:
# chmod 755 autopostgresqlbackup.sh # systemctl start postgresql # systemctl enable postgresql
Por fim, editaremos o valor da configuração do diretório de backup para:
autopostgresqlbackup.sh - Configurar Autopostgresqlbackup
BACKUPDIR="/var/backup/db/autopostgresqlbackup"
Depois de passar pelo arquivo de configuração do automysqlbackup , configurar esta ferramenta é muito fácil (essa parte da tarefa fica a seu critério).
9. No CentOS 7 , em oposição ao Debian 8 , autopostgresqlbackup é melhor executado como o postgres usuário do sistema, portanto, para fazer isso, você deve alternar para essa conta ou adicionar um trabalho cron ao arquivo crontab:
# crontab -u postgres -e
30 01 * * * /opt/autopostgresqlbackup/autopostgresqlbackup.sh
O diretório de backup, a propósito, precisa ser criado e suas permissões e propriedade do grupo devem ser definidas recursivamente para 0770 e postgres (novamente, isso NÃO será necessário no Debian ):
# mkdir /var/backup/db/autopostgresqlbackup # chmod -R 0770 /var/backup/db/autopostgresqlbackup # chgrp -R postgres /var/backup/db/autopostgresqlbackup
O resultado:
# cd /var/backup/db/autopostgresqlbackup # pwd # ls -lR daily
10. Agora você pode restaurar os arquivos quando necessário (lembre-se de fazer isso como usuário postgres após recriar o banco de dados vazio):
# gunzip -c postgresql_db_2015-09-02.Wednesday.sql.gz | psql postgresql_db
Considerações no Debian 8
Como mencionamos anteriormente, não apenas a instalação dessas ferramentas no Debian é mais simples, mas também suas respectivas configurações. Você encontrará os arquivos de configuração em:
- Automysqlbackup :/etc/default/automysqlbackup
- Autopostgresqlbackup :/etc/default/autopostgresqlbackup
Resumo
Neste artigo explicamos como instalar e usar o automysqlbackup e autopostgresqlbackup (aprender a usar o primeiro irá ajudá-lo a dominar o segundo também), duas ótimas ferramentas de backup de banco de dados que podem tornar suas tarefas como DBA ou administrador/engenheiro de sistema muito mais fáceis.
Observe que você pode expandir esse tópico configurando notificações por e-mail ou enviar arquivos de backup como anexos por e-mail – não é estritamente necessário, mas pode ser útil às vezes.
Como nota final, lembre-se de que as permissões dos arquivos de configuração devem ser definidas no mínimo (0600 na maioria dos casos). Estamos ansiosos para saber o que você pensa sobre este artigo. Sinta-se à vontade para nos enviar uma nota usando o formulário abaixo.