A segurança em TI, começa com os backups, ou seja, as cópias de segurança, aliado a uma política necessária para lidar com estes arquivos. Neste sentido, há 3 importantes “mandamentos”:
- Sempre faça Backup de tudo o que é importante
- Teste frequentemente os seus backups — poucas coisas, em sua vida, serão tão frustrantes quanto, ao tentar se recuperar de um desastre, descobrir que não foram feitos adequadamente ou se corromperam
- Armazene adequadamente — mantenha as cópias de segurança longe do local em que se encontram os dados originais, para que não corram riscos de sofrer o mesmo incidente (roubo, incêndio, sabotagem etc).
Não esqueça de que é fundamental ter cópias de segurança redundantes — ou seja, backup do backup.
Nenhum ‘esquema’ de segurança está completo se o foco for apenas a prevenção dos eventos sinistros. Política de segurança vai muito além — uma vez que as possibilidades de ser vítima de invasão e acidentes são reais — por isso é fundamental ter um plano eficaz para uma rápida recuperação. Se os danos são inevitáveis, ter um plano B, C… pode minimizar significativamente os prejuízos.
Backup para blogueiros ou donos de sites
Donos de sites e blogueiros têm razões adicionais para se preocupar com backup de todos os seus posts. O provedor pode tirar do ar e remover de seus servidores todo o seu trabalho, se acreditar que termos do seu contrato foram violados.
Veja como se colocar do lado seguro.
O nosso cenário
Neste post, vou mostrar como usar o comando mysqldump
para fazer guardar cópias de segurança dos dados armazenados no seu servidor. Se você não se sente à vontade com comandos em modo texto, pode usar uma excelente ferramenta web, chamada phpMyAdmin, que faz o mesmo trabalho com alguns cliques.
Vamos usar algumas variáveis em meio aos comandos, para tentar torná-los mais compreensíveis. Se você não souber como preencher algumas destas variáveis, consulte o administrador do banco de dados. Veja quais são:
- dbname — o nome do banco de dados
- dbuser — o nome de usuário que vai acessar o banco. Em alguns casos, vamos usar o root (administrador)
- dbpass — a senha do usuário do banco
- dbhost — o servidor em que se encontra o banco. Em uma instalação local, normalmente é
localhost
Como fazer backup do banco de dados com o mysqldump
O mysqldump é uma ferramenta eficiente para fazer backup do seu banco de dados na linha de comando, no servidor local ou remoto (via SSH). Ele cria um arquivo .sql
com os comandos DROP
, CREATE
e INSERT
. Veja como usar o comando mysqldump
como root:
mysqldump -u root -p dbname > backup.sql
No exemplo acima, direcionamos uma cópia integral do banco de dados dbname pro arquivo backup.sql. Todos os comandos sql necessários para a criação de uma nova versão daquele banco, estão incluídos em backup.sql.
Para copiar mais de um banco de dados, separe seus nomes com espaços:
mysqldump -u root -p dbname1 dbname2 dbname3 > backup.sql
Se você quiser fazer backup de todos os bancos de dados do servidor, usar o parâmetro --all-databases
torna tudo mais fácil:
mysqldump -u root -p --all-databases > backup-de-tudo.sql
Nota: O comando mysqldump
bloqueia o banco de dados enquanto trabalha. Portanto, ele deixa os usuários sem acesso, enquanto está sendo executado. Em casos de bancos de dados muito extensos, ele pode demorar para ser concluído. O bom senso manda avisar os usuários com antecedência e não fazer backups demorados em horários de pico.
Como comprimir o arquivo de backup
Há vários motivos para comprimir o seu arquivo de backup:
- arquivos de texto
.sql
grandes, atingem excelentes taxas de compressão; - quando comprimidos, podem ser enviados de um ponto a outro na rede muito mais rápido, consumindo muito menos banda;
- você pode armazenar uma quantidade maior de cópias de segurança em uma mídia física (CD, DVD ou BluRay) ou em uma conta na nuvem.
mysqldump -u root -p --all-databases | gzip -9 > backup-de-tudo.sql.gz
Usamos o aplicativo gzip, presente na maioria das distribuições Linux, com o nível de compressão máximo (9), no exemplo acima.
Para descompactar, posteriormente, use o gunzip:
gunzip backup-de-tudo.sql.gz
Como restaurar o backup feito com mysqldump
Não esqueça de substituir as variáveis pelos valores adequados, a seguir:
mysql -u dbuser -pdbpass dbname < backup.sql
Nota: A senha deve ser digitada “grudada” ao parâmetro -p
.
Para restaurar um arquivo de backup comprimido, faça assim:
gunzip < backup.sql.gz | mysql -u dbuser -pdbpass dbnam
Se deseja inserir os dados de backup.sql
em um banco de dados já existente:
mysqlimport -u dbuser -pdbpass backup.sql
Como fazer um backup local e restaurar no servidor remoto
Aqui, vou descrever o meu modo preferido de fazer backups. O problema é que nem sempre ele é aplicável — alguns provedores proíbem conexões, de fora, ao banco de dados. Ou seja, só aceitam conexões no localhost ou de dentro da sua própria rede. Quando isto ocorre, você recebe a seguinte mensagem ao tentar se conectar:
mysqldump: Got error: 1045: Access denied for user ...
Neste caso, o correto é se conectar ao provedor primeiro. Depois, ao banco de dados. Clique aqui, para saber como se conectar ao MySQL, em um servidor remoto via SSH.
Uma vez conectado, o mysqldump
pode ser usado para realizar o serviço. Veja como:
mysqldump -u dbuser-local -pdbpass-local dbname-local | mysql -u dbuser-remoto -pdbpass-remoto --host=dbhost-remoto -C dbname-remoto
Nota: Fique atento, para usar os nomes e senhas corretos. Os valores e nomes locais são possivelmente diferentes dos valores remotos.
Enfim, muito mais pode ser escrito sobre backups e, com toda certeza, há muitas outras formas de realizá-los para bancos de dados MySQL. O importante, mesmo, é fazê-los com frequência. Não esqueça.