Como fazer backup do seu banco de dados MySQL?

Cluster (Imagem: WikiMedia.)
Cluster (Imagem: WikiMedia.)

A segurança em TI, começa com as cópias de segurança (os backups):

  1. Sempre faça Backup de tudo o que é importante
  2. 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
  3. 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 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.
    • 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.

Como ripar seus CDs de áudio no Linux

O RipIT é um aplicativo para ripar CDs de áudio. Ele permite fazer cópias de segurança, preservando a qualidade original do som.
A ferramenta é simples e flexível o suficiente para gerar vários padrões de arquivos simultaneamente, prontos para serem levados ao smartphone, para o cartão SD, para o pendrive do carro etc.
É uma ferramenta em modo texto, de linha de comando, para ser executada num terminal.
É, também, muito fácil de ser usada.
Basicamente, tudo pode se resumir a digitar o comando e dar enter para todas as perguntas (usualmente duas) que ele fizer e ir fazer outra coisa enquanto ele trabalha.
Mas eu não viria até aqui só para escrever isto, não é?
A instalação é fácil, pois o aplicativo está disponível nos repositórios oficiais de todas as grandes distribuições GNU/Linux.
Se você usa o Ubuntu, pode instalar clicando no botão abaixo:

Instalar Ripit

Tal como muitas ferramentas que podem ser executadas na linha de comando, o ripit é extremamente flexível e oferece um grande poder ao usuário na sua configuração.
O seu arquivo de configuração fica em ~/.ripit/config e é auto explicativo e simples (pra quem sabe inglês). Se você domina o idioma, divirta-se e tenha juízo!
Se você ainda está aqui é por que deseja que eu facilite um pouco mais as coisas pra você. Vamos a isso!
A lista de comandos que costumo usar é a seguinte:

ripit --coder lame --bitrate 320 --lowercase --underscore --verbose 5 --comment "meu backup pessoal" --eject --save

Estas opções têm o seguinte significado:

  • --coder lame: pede para usar um determinado codificador. Este aí, gera os arquivos mp3. Se você preferir um formato livre/aberto, pode usar oggenc no lugar de lame. Eu costumo usar mais o oggenc.
  • --bitrate 320: define a “qualidade” dos arquivos. O valor 320 é exagerado para a maioria dos casos e vai contribuir para os arquivos de saída se tornarem muito grandes. Contudo, como não temos a intenção de fazer upload deles, mas guardá-los, pode ser interessante usar este valor. Caso queira compartilhar os seus arquivos, use um valor mais baixo. Um bitrate de 128 kbps é ótimo.
  • --lowercase e --underscore: fazem com que os_asrquivos_de_saída_tenham_os_seus_nomes_escritos_em_minúsculas e com_palavras_separadas_por_sublinhas.
  • -verbose 5: liga o modo “tagarela” do ripit no máximo. Ele vai informá-lo de tudo que estiver fazendo. O nível padrão é 3. Se você não quer saber de nada ou não entende inglês, pode desligá-lo, usando o nível 0.
  • --comment “meu comentario”: entre aspas, sinta-se à vontade pra dizer alguma coisa sobre os arquivos.
  • --eject: ao final de todo o processo, ejeta o seu CD.
  • --save: grava todas estas configurações no arquivo ~/.ripit/config. Assim, na próxima vez em que você executar o ripit, só precisará citar o seu nome. Ele vai buscar o restante das configurações no arquivo.

Desta forma, você pode brincar um pouco com as opções do ripit e gravar no arquivo de configuração as suas opções preferidas. Depois de ter gravado as suas preferências no arquivo de configurações, você só precisará usar o comando desacompanhado de qualquer parâmetro.

Outras opções interessantes de uso do ripit

Os aparelhos móveis atuais já têm uma quantidade de memória suficiente para não nos obrigar a ouvir músicas gravadas com baixa qualidade.
O padrão de compressão MP3 surgiu em um momento em que os arquivos de áudio tinham que ser minúsculos — para que se pudesse ter um pouco mais de uma centena de músicas dentro de um CD de 650 MB.
Esta limitação não existe mais.
A maioria dos sons automotivos pode reproduzir CD-RW de 700 MB e “pendrives” com capacidades superiores a 64 GB.
Além disto, é possível conectar o seu reprodutor pessoal de mídias ou smartphone a quase todos os tipos de sistemas de som via entrada auxiliar ou bluetooth.
Estas possibilidades reduzem a obrigação de comprimir excessivamente os arquivos de música — o que implica diretamente na perda da qualidade sonora.
Se você tem bastante espaço disponível, então não precisa, de forma alguma, abrir mão da qualidade do som.
Você pode, até mesmo usar arquivos .FLAC — fiéis à qualidade original do áudio e podem ser reproduzidos em qualquer smartphone Android.
Veja a linha de comando abaixo:

ripit --coder 0,1,2 --quality 0,10,0 --bitrate 320 --protocol 5 --verbose 4 --disable-paranoia 2 --eject

Lista de músicas do álbum as 4 estações de Legiao Urbana
Recomendo usar o FLAC. Se você precisa de argumentos para isto, leia este artigo.
Seguem os motivos de ter escolhido estas opções:

  • --coder 0,1,2 — o aplicativo permite que eu especifique mais de uma codificação. Isto é ótimo!
    Assim, eu não preciso repetir o processo para obter os arquivos em .FLAC ou qualquer outro formato.
    Com estas opções, separadas por vírgulas, o ripit irá criar e gravar os arquivos em MP3 (0), OGG (1) e FLAC (3). O Google Music Player, padrão no Android, lê todos estes 3 formatos.
    Com um processador atual, o tempo de execução da tarefa não irá aumentar mais do que alguns minutos, ou seja, 20 – 30% a mais.
  • --quality — novamente, separei as opções de cada formato de arquivo por vírgulas. Aqui, ficou definida a máxima qualidade (e mínima compressão), respectivamente, para os formatos MP3, OGG e FLAC.
    Neste caso, os arquivos FLAC irão para o meu backup pessoal, em Blu-Ray, em função da qualidade superior — a partir deles, poderei criar arquivos em MP3 ou OGG a qualquer momento.
  • --protocol 5 — A variável protocol level ativa o suporte às fontes UTF-8. O valor padrão desta variável é 6.
    Se você estiver tendo problemas com a acentuação nos nomes das músicas ripadas de um álbum nacional, use o valor 5 (como no meu exemplo).
  • --disable-paranoia 2 — este parâmetro desabilita o recurso paranoia em caso de erro na leitura de uma trilha. O programa, então, irá repetir a leitura sem o paranoia, retomando-o na próxima trilha.