RatYnh0 Posted May 18, 2009 at 02:28 PM Report #265069 Posted May 18, 2009 at 02:28 PM 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,
oliveira99 Posted May 19, 2009 at 09:11 AM Report #265296 Posted May 19, 2009 at 09:11 AM 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,
KiNgPiTo Posted May 19, 2009 at 04:52 PM Report #265426 Posted May 19, 2009 at 04:52 PM 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...
RatYnh0 Posted May 19, 2009 at 05:12 PM Author Report #265429 Posted May 19, 2009 at 05:12 PM 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?
KiNgPiTo Posted May 19, 2009 at 08:55 PM Report #265518 Posted May 19, 2009 at 08:55 PM 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
José Lopes Posted May 19, 2009 at 10:11 PM Report #265588 Posted May 19, 2009 at 10:11 PM 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á!!
RatYnh0 Posted May 21, 2009 at 10:46 AM Author Report #266091 Posted May 21, 2009 at 10:46 AM 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,
KiNgPiTo Posted May 21, 2009 at 10:39 PM Report #266298 Posted May 21, 2009 at 10:39 PM 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 😛
José Lopes Posted May 21, 2009 at 10:48 PM Report #266301 Posted May 21, 2009 at 10:48 PM 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á!!
RatYnh0 Posted May 26, 2009 at 09:35 AM Author Report #267304 Posted May 26, 2009 at 09:35 AM 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,
KiNgPiTo Posted May 27, 2009 at 09:03 AM Report #267572 Posted May 27, 2009 at 09:03 AM 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
RatYnh0 Posted May 28, 2009 at 08:31 AM Author Report #267911 Posted May 28, 2009 at 08:31 AM 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,
KiNgPiTo Posted May 28, 2009 at 09:14 AM Report #267924 Posted May 28, 2009 at 09:14 AM 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...
RatYnh0 Posted May 28, 2009 at 09:29 AM Author Report #267928 Posted May 28, 2009 at 09:29 AM 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%
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now