Conforme Carlos E. Morimoto, uma das grandes dvidas de qualquer
administrador iniciante como fazer backup das bases de dados do MySQL, j que os dados so gravados e acessados atravs do servidor MySQL e no diretamente atravs de arquivos, como no caso dos arquivos referentes aos sites, salvos na pasta "/var/www" (no caso de LINUX), ou na pasta c:\EasyPHP 3.0\mysql\bin, no caso de ser Windows. No Linux, as bases de dados do MySQL so salvas por padro dentro da pasta "/var/lib/mysql". Ao criar a base de dados "escola", por exemplo, ser criada a pasta "/var/lib/mysql/escola", contendo um conjunto de arquivos, referentes s tabelas criadas. No caso de ser Windows, as bases de dados do MySQL so salvas por padro dentro da pasta c:\EasyPHP 3.0\mysql\data. Ao criar a base de dados escola, por exemplo, ser criada a pasta c:\EasyPHP 3.0\mysql\data\escola, contendo um conjunto de arquivos, referentes s tabelas criadas. A forma mais simples de fazer backup das bases de dados do MySQL simplesmente salvar o contedo da pasta "/var/lib/mysql", criando um arquivo .tar.gz ou mesmo copiando os arquivos diretamente para outra partio. O maior problema que as bases de dados so alteradas continuamente durante a operao do banco de dados, o que leva a cpias inconsistentes. Se alguns dos arquivos dentro da pasta com a base mudam no meio da cpia, o backup conter uma mistura de dados novos e antigos, uma receita para o desastre. A forma mais segura parar o servio do MySQL antes de fazer o backup, garantindo assim que nada ser alterado durante a cpia, como no exemplo abaixo: # /etc/init.d/mysql stop # tar -zcvf mysql.tar.gz /var/lib/mysql/ # /etc/init.d/mysql start O problema nesse caso que o servio fica fora do ar durante alguns segundos ou minutos. Se a base de dados usada pelo site da sua empresa, por exemplo, ele ficar fora do ar at que o backup seja concludo e o servidor MySQL volte a ser iniciado. Voc pode agendar os backups usando o cron, para que eles sejam executados durante a madrugada, por exemplo, mas, mesmo assim, voc vai acabar sempre perdendo algumas visitas. A segunda opo fazer um backup online, sem parar o servidor. O utilitrio mais simples (e provavelmente o mais usado) para isso o mysqldump, que acompanha o pacote principal do MySQL.
Diferente do mtodo anterior, onde os arquivos so copiados
diretamente, o mysqldump acessa o banco de dados por vias normais, da mesma forma que um aplicativo qualquer faria. Em outras palavras, ele no l os arquivos, mas sim as informaes armazenadas nas bases de dados. Isso permite que o backup seja consistente, mesmo que as bases de dados sejam alteradas durante o backup. BACKUP Para salvar todas as bases de dados do servidor no arquivo "backup.sql", criado no diretrio atual, por exemplo, o comando seria:
# mysqldump -u root -p -x -e -A > backup.sql
O "-u root -p" especifica o usurio que ser usado para acessar o banco de dados. No exemplo estou fazendo um backup completo, por isso estou usando diretamente o root. A opo "-x" trava as bases de dados no momento em que cada uma copiada, evitando qualquer problema de inconsistncia, enquanto a "-e" uma opo de otimizao, que permite ao mysqldump combinar argumentos INSERT dentro das tabelas, o que torna tanto o backup quanto a restaurao mais rpidos. Finalizando, a opo "-A" especifica um backup completo, de todas as bases de dados. Se o comando parasse por a, o mysqldump simplesmente escreveria todo o contedo das bases de dados na prpria janela do terminal, resultando em uma longa exibio de informaes, sem muita utilidade. Como queremos que a sada seja salva em um arquivo, usamos o ">", que redireciona a sada para o arquivo especificado. O arquivo "backup.sql" gerado basicamente um arquivo de texto gigante contendo declaraes de todas as informaes armazenadas. RESTAURAO O backup poderia ser ento restaurado diretamente usando o comando abaixo, sem que voc precisasse remover as bases e tabelas manualmente antes de iniciar a recuperao:
# mysql -u root -p < backup.sql
O backup usando o mysqldump e a restaurao usando o mysql so preferveis cpia manual dos arquivos da pasta "/var/lib/mysql", pois evita problemas de incompatibilidade ao migrar os dados para verses diferentes do MySQL. Alm disso, a facilidade de fazer o backup sem precisar parar o servidor uma grande vantagem em um ambiente de produo. Ateno! Essa facilidade de fazer backup sem precisar parar o servidor, remete a um cuidado, onde, a restaurao sobrepe os dados que esto em operao. Assim, necessrio que o administrador, pare o Banco de Dados, e somente aps a restaurao permita que os demais usurios continuem trabalhando.