You are on page 1of 3

Executando backup do MySQL e enviando por FTP

Autor: william de melo gueiros <williammelo at gmail.com> Data: 24/06/2003 Introduo Este ms aconteceu algo comigo que pode parecer piada, mas verdade. Sa de Taubat para So Paulo para curtir um pouco na festa skoll beats e quando cheguei na Segunda de manh crente que passaria o dia contando as novidades, fui surpreendido com a bomba. Um de nossos servidores com um HD SCSI de 80GB havia queimado e nem dava sinal de vida. Para minha sorte, havia exatamente uma semana que eu tinha instalado um servidor de backup, logo se um servidor parou, basta colocar o outro no ar. Para vocs terem uma idia, existiam cinco mquinas penduradas num nico no-break, porm em apenas esta algum tipo de curto destruiu o hardware a nvel de o prprio teclado no funcionar em nenhuma outra mquina. Foram por gua abaixo um disco SCSI, controlador, teclado, placas de rede, placa de vdeo, placa me. Chega de papo furado e vamos ao artigo, que foi escrito baseado num ambiente que roda RedHat, porm neste caso a distribuio Linux no importa, pois os procedimentos aqui apresentados funcionaro em qualquer delas.

Servio cron na estao que executa o backup MySQL no servidor de produo que precisa de backup Conta de usurio no MySQL com permisso de acesso remoto a partir da estao que executa o backup Conta de usurio no servidor FTP que receber o backup

Como descubro se minha conta de usurio do MySQL tem direito de acesso remoto? Fcil! Abra um terminal do MySQL com o seguinte comando: # mysql Isso te levar ao console do programa, feito isso, digite o seguinte comando: MYSQL> GRANT ALL PRIVILEGES ON seu_banco_dados.* TO usuario@host_remoto IDENTIFIED BY 'senha_do_usuario' WITH GRANT OPTION; MYSQL> FLUSH PRIVILEGES;

Onde: seu_banco_dados = o nome do banco de dados que seu usurio precisa ter acesso usuario = login no usurio host_remoto = mquina remota que ir acessar o servidor MySQL senha_do_usuario = o nome j diz tudo n? Para testar a conexo, a partir do host remoto digite o seguinte comando: $ mysql -h nome_servidor -u usuario -psenha_do_usuario seu_banco_dados Se tudo estiver OK, voc cair no terminal do MySQL do servidor.

Crie um diretrio de backup no local de sua preferncia, no meu caso optei por /var/backup. # mkdir /var/backup E dentro deste diretrio vou armazenar o script que realiza backup. Eis o cdigo do arquivo, que vou cham-lo de backup.sh: #!/bin/bash # define o formato do nome do arquivo de backup NARQUIVO="base--`date +%d_%m_%Y__%H_%M`" # utiliza o programa mysqldump para efetuar backup no banco de dados do servidor de MySQL, # direcionando a sada para o arquivo de backup em si. O sinal '&&' no final do # comando significa que o prximo comando s ser executado caso este seja realizado # com sucesso. mysqldump --host=servidor_mysql --user=usuario --password=senha_do_usuario --databases seu_banco_dados > /var/backup/$NARQUIVO.sql && # targiando o arquivo para que no fique muito grande e comer a banda da lan tar -cvzf /var/backup/$NARQUIVO.tar.gz /var/backup/$NARQUIVO.sql # removendo o arquivo original para liberar espao rm -f /var/backup/$NARQUIVO.sql # espere por 90 segundos sleep 90 FTPSERVER="servidor de ftp" USERNAME="usuario de ftp" PASSWORD="sua senha" LOCALDIR="/var/backup" # conecte-se ao servidor FTP e envie o arquivo ftp -ni $FTPSERVER <<FIM user $USERNAME $PASSWORD lcd $LOCALDIR mdelete *.tar.gz mput $NARQUIVO.tar.gz bye

FIM Agora d permisso de execuo ao script: # chmod 755 /var/backup/backup.sh E agende sua execuo a partir do crontab. No meu caso, escolhi fazer backup uma vez por hora: # crontab -e 0 */1 * * * /var/backup/backup.sh Gostaria de agradecer ao Fbio, pois aproveitei seu script de fazer FTP como ponto de partida para o resto das funcionalidades.

http://www.vivaolinux.com.br/artigo/Executando-backup-do-MySQL-e-enviando-por-FTP Voltar para o site

You might also like