• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

RatYnh0

Backup / Restore mysql

14 mensagens neste tópico

Boas!

Estou a fazer um projecto e necessito de fazer o backup e o restore da Base de dados em Mysql no próprio projecto... O que eu uso é o seguinte para fazer o backup:

If save_backup.ShowDialog = Windows.Forms.DialogResult.OK Then
            l = save_backup.FileName
            ligacao.ligacao()
            Process.Start("C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump.exe", "--user=" & ligacao.utilizador & " --password=" & ligacao.password & " --host=" & ligacao.ip & " --databases MySQL " & ligacao.bd & " -r " & l & "")
            MsgBox("Guardado com sucesso em " & l & "", MsgBoxStyle.Information, "Backup")
        End If

O Backup funciona correctamente só que o único problema é que este projecto é para distribuir e não queria que fosse necessário o utilizador ter software adicional instalado!

Não existe forma mais simples de fazer o backup e o restore? Através de uma query ou coisa parecida? Eu já tentei usar esta query mas dá um erro:

BACKUP DATABASE gesos TO '/tmp/ges.sql'; 

agradeco respostas!

cumps,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas!

Estou a fazer um projecto e necessito de fazer o backup e o restore da Base de dados em Mysql no próprio projecto... O que eu uso é o seguinte para fazer o backup:

If save_backup.ShowDialog = Windows.Forms.DialogResult.OK Then
            l = save_backup.FileName
            ligacao.ligacao()
            Process.Start("C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump.exe", "--user=" & ligacao.utilizador & " --password=" & ligacao.password & " --host=" & ligacao.ip & " --databases MySQL " & ligacao.bd & " -r " & l & "")
            MsgBox("Guardado com sucesso em " & l & "", MsgBoxStyle.Information, "Backup")
        End If

O Backup funciona correctamente só que o único problema é que este projecto é para distribuir e não queria que fosse necessário o utilizador ter software adicional instalado!

Não existe forma mais simples de fazer o backup e o restore? Através de uma query ou coisa parecida? Eu já tentei usar esta query mas dá um erro:

BACKUP DATABASE gesos TO '/tmp/ges.sql'; 

agradeco respostas!

cumps,

Em Relação ao restore posso dar-te umas luzes, pois tambem estou com a mesma duvida do que tu... Para o restore usei o seguinte (apesar de não estar a funcionar correctamente):

Process.Start("C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe", "-u root -p 1234 < ""c:/teste.sql""")

cumps,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas ele provavelmente já que quer portabilizar a aplicação, deve-se estar a querer ver livre da chamada ao mysql... Quanto ao backup, não estou mesmo a ver, mas no restore, após teres o ficheiro .sql criado, basta leres e executares as querys que estão lá dentro...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas ele provavelmente já que quer portabilizar a aplicação, deve-se estar a querer ver livre da chamada ao mysql... Quanto ao backup, não estou mesmo a ver, mas no restore, após teres o ficheiro .sql criado, basta leres e executares as querys que estão lá dentro...

Podes explicar-te melhor? Executar querys como?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes explicar-te melhor? Executar querys como?

Repara que eu não percebo nada de vb, por isso é teoria o que vou dizer...

Quando fazes um restore, o ficheiro gerado se abrires com o bloco de notas reparas que é um conjunto de instruções e querys que quando todas executas criam a base de dados e inserem os dados. Logo, se com o IO (não sei como é em vb), abres o ficheiro, guardas numa variável o que está lá dentro, e após teres a ligação aberta com a BD, mandas essa variável para lá que todas as instruções serão executadas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Repara que eu não percebo nada de vb, por isso é teoria o que vou dizer...

Quando fazes um restore, o ficheiro gerado se abrires com o bloco de notas reparas que é um conjunto de instruções e querys que quando todas executas criam a base de dados e inserem os dados. Logo, se com o IO (não sei como é em vb), abres o ficheiro, guardas numa variável o que está lá dentro, e após teres a ligação aberta com a BD, mandas essa variável para lá que todas as instruções serão executadas

Não sei se isso é assim tão linear.... uma coisa é criar estrutura... essa sim..pode ser completamente criada com instruções de sql... embora não seja tão simples apenas enviar para lá as variáveis... agora.. passar conteúdos, sobretudo se tiveres campos do tipo BLOB (isto em oracle, não sei como se designam em Mysql..mas também existem) não sei se será assim tão fácil.

O que se costuma fazer...sobretudo quando se tratam de backups ou restores integrais, é de facto o que usa recorrendo aos próprios utilitários do SGDB como o "ratynho" refere no primeiro post.

Mas agora fiquei com uma dúvida... tens duas hipóteses... ou corres o mysql num servidor e os utilizadores ligam-se lá...e fazes o backup no próprio servidor, ou para correres o mysql na própria máquina cliente... parece-me que vais ter que ter sempre o mysql instalado.. logo, podes aceder aos tais "utilitários" que refiro...

Esclarece-me por favor

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei se isso é assim tão linear.... uma coisa é criar estrutura... essa sim..pode ser completamente criada com instruções de sql... embora não seja tão simples apenas enviar para lá as variáveis... agora.. passar conteúdos, sobretudo se tiveres campos do tipo BLOB (isto em oracle, não sei como se designam em Mysql..mas também existem) não sei se será assim tão fácil.

O que se costuma fazer...sobretudo quando se tratam de backups ou restores integrais, é de facto o que usa recorrendo aos próprios utilitários do SGDB como o "ratynho" refere no primeiro post.

Mas agora fiquei com uma dúvida... tens duas hipóteses... ou corres o mysql num servidor e os utilizadores ligam-se lá...e fazes o backup no próprio servidor, ou para correres o mysql na própria máquina cliente... parece-me que vais ter que ter sempre o mysql instalado.. logo, podes aceder aos tais "utilitários" que refiro...

Esclarece-me por favor

boas!

Obrigado pelas respostas que vão dando... são todas bem vindas...

Bem o projecto que estou a fazer é para implementar numa empresa, onde tem um servidor (onde ficará a base de dados) e tem 2 clientes que estarão a aceder a base de dados....

E o que eu queria era que os clientes pudessem fazer o backup e o restore da base de dados através do projecto....

Eu no primeiro post mostro como faço o backup, ele cria o ficheiro com 422 kb de tamanho, só que quando vou a fazer restore com o software mysqladministrator dá erro, logo não está a fazer correctamente o backup....

È este o único problema... para poder entregá-lo o resto tá tudo pronto!

Qualquer informações fico grato!

cumps,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Até posso estar com uma ideia, estúpida ou não acho que vale a pena o teste...

Se tens os PCs ligados em rede, possivelmente terás uma pasta remota no servidor na qual os outros PCs poderão aceder...

Então nessa pasta copias para lá a pasta bin do mysql, e adicionas o caminho ás variáveis de ambiente dos PCs clientes. Estes assim já poderão utilizar o mysqldump sem o ter instalado...

Eu disse adicionas o caminho ás variáveis de sistema pois assim poderás utilizar o seguinte comando na linha de comandos:

Para Backup:

Process.Start("cmd.exe", "/k mysqldump --user=root --password=pass --host=localhost --databases nomeBD > c:/caminho.sql")

Para Restore:

Process.Start("cmd.exe", "/k mysql --user=root --password=pass --host=localhost < c:/caminho.sql")

Repara que em vez de chamar o caminho para a aplicação, abri 1º o cmd e daí chamei as aplicações... Isto apenas funcionará se tiveres a pasta bin (ou seja, todas as aplicações do mysql server) nas variáveis de ambiente do windows...

Poderá funcionar, senão a intenção era boa :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Até posso estar com uma ideia, estúpida ou não acho que vale a pena o teste...

Se tens os PCs ligados em rede, possivelmente terás uma pasta remota no servidor na qual os outros PCs poderão aceder...

Então nessa pasta copias para lá a pasta bin do mysql, e adicionas o caminho ás variáveis de ambiente dos PCs clientes. Estes assim já poderão utilizar o mysqldump sem o ter instalado...

Eu disse adicionas o caminho ás variáveis de sistema pois assim poderás utilizar o seguinte comando na linha de comandos:

Para Backup:

Process.Start("cmd.exe", "/k mysqldump --user=root --password=pass --host=localhost --databases nomeBD > c:/caminho.sql")

Para Restore:

Process.Start("cmd.exe", "/k mysql --user=root --password=pass --host=localhost < c:/caminho.sql")

Repara que em vez de chamar o caminho para a aplicação, abri 1º o cmd e daí chamei as aplicações... Isto apenas funcionará se tiveres a pasta bin (ou seja, todas as aplicações do mysql server) nas variáveis de ambiente do windows...

Poderá funcionar, senão a intenção era boa :P

Concordo...é uma hipótese com pernas para andar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Até posso estar com uma ideia, estúpida ou não acho que vale a pena o teste...

Se tens os PCs ligados em rede, possivelmente terás uma pasta remota no servidor na qual os outros PCs poderão aceder...

Então nessa pasta copias para lá a pasta bin do mysql, e adicionas o caminho ás variáveis de ambiente dos PCs clientes. Estes assim já poderão utilizar o mysqldump sem o ter instalado...

Eu disse adicionas o caminho ás variáveis de sistema pois assim poderás utilizar o seguinte comando na linha de comandos:

Para Backup:

Process.Start("cmd.exe", "/k mysqldump --user=root --password=pass --host=localhost --databases nomeBD > c:/caminho.sql")

Para Restore:

Process.Start("cmd.exe", "/k mysql --user=root --password=pass --host=localhost < c:/caminho.sql")

Repara que em vez de chamar o caminho para a aplicação, abri 1º o cmd e daí chamei as aplicações... Isto apenas funcionará se tiveres a pasta bin (ou seja, todas as aplicações do mysql server) nas variáveis de ambiente do windows...

Poderá funcionar, senão a intenção era boa ;)

Boas!

Desde já obrigado pelas ideias...

Tentei testar a forma como indica e aparece o seguinte:

restauro.jpg

Ele preenche o ficheiro Sql... com 13,3 kb..

Fiz alguma coisa mal?

cumps,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então se preenche, já deve estar a fazer o backup direito.

Essa janela aparece porque fazes a chamada ao cmd... No vb, quando chamar o process, executa como hiden que nem vês essa janela a abrir

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então se preenche, já deve estar a fazer o backup direito.

Essa janela aparece porque fazes a chamada ao cmd... No vb, quando chamar o process, executa como hiden que nem vês essa janela a abrir

Podes indicar como faço isso ?

Obrigado!

cumps,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Experimenta isto quando chamar o Process:

Dim ProcessProperties As New ProcessStartInfo
ProcessProperties.FileName = "cmd.exe"
ProcessProperties.Arguments = "/k mysqldump --user=root --password=pass --host=localhost --databases nomeBD > c:/caminho.sql"
ProcessProperties.WindowStyle = ProcessWindowStyle.Hidden
Dim myProcess As Process = Process.Start(ProcessProperties)

Isto para o backup, para o restore muda os argumentos...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Experimenta isto quando chamar o Process:

Dim ProcessProperties As New ProcessStartInfo
ProcessProperties.FileName = "cmd.exe"
ProcessProperties.Arguments = "/k mysqldump --user=root --password=pass --host=localhost --databases nomeBD > c:/caminho.sql"
ProcessProperties.WindowStyle = ProcessWindowStyle.Hidden
Dim myProcess As Process = Process.Start(ProcessProperties)

Isto para o backup, para o restore muda os argumentos...

Ok Obrigado!

Dúvidas tiradas!

Tudo a funcionar a 100%

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora