Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como fazer backup/restaurar MySQL/MariaDB e PostgreSQL usando as ferramentas 'Automysqlbackup' e 'Autopostgresqlbackup'


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:
  1. Automysqlbackup :/etc/default/automysqlbackup
  2. 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.