Jump to content

Recommended Posts

Posted

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,

Posted

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,

Posted

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...

Posted

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?

Posted

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

Posted

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

Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!

Posted

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,

Posted

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 😛

Posted

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 😛

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

Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!

Posted

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:

http://img33.imageshack.us/img33/2630/restauro.jpg

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

Fiz alguma coisa mal?

cumps,

Posted

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

Posted

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,

Posted

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...

Posted

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%

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.