A segurança em TI, começa com as cópias de segurança (os backups):
- 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).
Nenhum ‘esquema’ de segurança está completo se o foco for apenas a prevenção dos eventos sinistros. Política de segurança vai além da prevenção — 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.
Você é blogueiro? Tem um website ou portal?
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 arquivobackup.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.
- Veja como é fácil realizar este processo, usando o exemplo anterior:
mysqldump -u root -p --all-databases | gzip -9 > backup-de-tudo.sql.gz |
Usamos o aplicativo gzip
, presente na maioria das distro Linux, com o nível de compressão máximo (9), neste exemplo.
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 dbname |
Se você 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 se esqueça disto.
Esse artigo foi postado originalmente em: http://elias.praciano.com/2013/07/como-fazer-backup-do-seu-banco-de-dados-mysql/ por: http://elias.praciano.com/author/budspencer/