Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

onedev

Backup do banco Mysql de um sistema ou ecommerce

Recommended Posts

Olá Pessoal,

 

tive a idéia de criar uma função no sistema ou loja virtual que faça um backup da banco de dados mysql. Seria um asp que montaria toda a estrutura SQL do banco de dados e exibiria num arquivo .txt ou .sql.

 

Alguém já viu algo assim? Pode dar uma dica de algum material de leitura ou código de exemplo?

Acho que poderiamos discutir isso aqui, considero uma função essencial para termos em TODOS os nossos sistemas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma olhada talvez ajude

 

A principal desvantagem daquelas técnicas é o fato de que os bancos de dados ficam indisponíveis para alterações durante a execução da rotina de backup. Neste artigo vamos apresentar uma forma simples de se fazer backup online utilizando o mysqldump.

 

O problema crítico no backup online é garantir que todas as alterações realizadas durante a geração do backup estarão presentes na imagem gerada. A cópia de arquivos ou a leitura da base para exportação via SQL ou texto é realizada de forma sequencial, sendo assim pode ocorrer uma inserção em uma tabela que já foi incluída no backup, e esta alteração não estará presente no backup. Isto gera uma cópia inconsistente da sua base de dados, inpossibilitando a restauração completa da base. Podemos contornar esta situação no MySQL utilizando os arquivos de logs binários para armazenar estes dados durante o backup. Imaginemos a seguinte situação: o MySQL está escrevendo o log binário mysql-bin.014, lembre-se de que os logs são sempre sequenciais, e desejamos iniciar um backup online. Para garantir

que teremos no backup todos os dados, criamos um novo log no início da execução da rotina de backup, da seguinte forma:

 

shell>mysqldump --all-databases -F > backup-online.sql

 

A opção -F do mysqldump força a criação de um novo arquivo de log antes que se inicie a geração do dump em SQL, no nosso exemplo cria-se o arquivo mysql-bin.015. A opção --all-databases indica que todos os bancos de dados serão copiados. No exemplo todas as alterações que estão ocorrendo concomitantemente ao procedimento de backup estão sendo armazenadas neste log gerado (mysql-bin.015). É importante ressaltar que alguns dados estarão presentes apenas neste

log, enquanto outros estarão contidos no log e no arquivo de backup (backup-online.sql). Ao final da execução do mysqldump, executamos um comando FLUSH LOGS para criar um novo log (mysql-bin.016), que armazenará todas as alterações realizadas após a realização do backup:

 

shell>mysql -e "FLUSH LOGS"

 

Feito isto, você terá que armazenar no seu backup o arquivo backup-online.sql, que contém os dados em formato SQL e o arquivo mysql-bin.015, que contém as alterações realizadas durante a execução do mysqldump. Com isto, está garnatido que você possui uma cópia fiel da sua base de dados mesmo tendo ocorrido alterações em parelelo com a execução do mysqldump. Para restaurar a base de dados utilizando este backup você deverá restaurar primeiro a estrutura do banco contida no arquivo SQL. Em seguida, você deve executar o log mysql-bin.015 armazernado em seu backup, recuperando assim as informações alteradas durante a execução da rotina de backup. E finalmente, você deverá executar os logs a partir do mysql-bin.016 para recuperar todas as informações adicionadas no intervalo entre o backup e a falha ocorrida no sistema. A execução da restauração

se daria da seguinte forma:

 

shell>mysql < backup-online.sql

shell>mysqlbinlog mysql-bin.015 > dump.015

shell>mysql -f < dump.015

shell>mysqlbinlog mysql-bin.016 > dump.016

shell>mysql < dump.016

 

Observe que durante a execução do log mysql-bin.015 foi utilizada a opção -f do mysql, para que o mysql ignore os eventuais erros de execução dos comandos presentes no arquivo de log. Isto é necessário, já que neste log podem existir inserções que já haviam sido colocadas no arquivo de backup (.sql). Assim, na restauração deste log teríamos inserções duplicadas para alguns registros, mas estas podem ser ignoradas já que as mesmas já estavam contidas no backup. Depois disto executamos o próximo log para restaurar os dados alterados após o backup, tendo finalmente a base de dados na situação em que a mesma se encontrava no momento anterior à situação de erro.

 

Para quem utiliza o InnoDB, existe uma ferramenta InnoDBHotBackup, que é comercializada através do site do InnoDB (www.innodb.com). Esta ferramenta realiza um procedimento de backup online para tabelas InnoDB, para maiores informações sobre o produto acesse o site do InnoDB.

Compartilhar este post


Link para o post
Compartilhar em outros sites

xanburzum,

 

mas isso ai não é um código ASP. Isso ai é um comando pra ser executado no prompt do servidor, seilá?

O ideal seria uma função para que um script ASP gere esse backup pois assim o próprio usuário do sistema que na maioria é uma leigo irá conseguir gerar um arquivo de backup do banco de dados.

 

alguem tem alguma dica? to procurando aqui no google mas não achei muita coisa.

em PHP existem vários códigos prontos para isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode fazer isso direto no mysql

Para copiar arquivos você utilizar a seguinte sintaxe:

FSO.CopyFile "C:Pastaarquivo.txt", "c:Backup"

 

 

 

 

 

Para copiar a pasta você utilizar o seguite:

FSO.CopyFolder "C:Pasta","c:Destino"

Compartilhar este post


Link para o post
Compartilhar em outros sites

xanburzum,

 

Eu sei que posso fazer isso direto no mysql, todo mundo sabe como fazer isso.

Mas você leu o topico? A idéia é criar um script asp que gere um backup do banco de dados. Isso seria feito dentro do sistema por qualquer usuario.

 

Resolveria o problema de usuarios de um sistema que não tem habilidade suficiente pra usar uma ferramenta de gerenciamento do mysql para criar um backup.

E ficaria muito fáicl tambem, com apenas um click seria gerado o backup.

Compartilhar este post


Link para o post
Compartilhar em outros sites

voccê pode fazer atraves do FSO e determinar uma data especifica

Compartilhar este post


Link para o post
Compartilhar em outros sites

xanburxun,

 

mas como fazer isso? não tenho nem ideia de como proceder na construção disso.

você tem algum material de referencia sobre isso ou um script demo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar o WScript.Shell e executar aexecução da rotina de backup, da seguinte forma:

 

shell>mysqldump --all-databases -F > backup-online.sql

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Vinicius,

 

eu já tinha acessado esse post desse forum.

O problema é que nenhum servidor windows possui esse componente, teria de ter um dedicado.

 

Esse é o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E se fizer um select e apos isso montar um laço para inserir isso num arquivo via fso ?

O arquivo depois de criado poderia ser baixado por meio de um link para download do arquivo.

 

Não apareceria os comandos como create e tals que são criados no dump, mas podem ser inseridos na criação do arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.