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

rjsma

[RESOLVIDO]fazer backup da bd

49 mensagens neste tópico

boas

tou a fazer um programa em que gostava de poder fazer o backup da bd e depois poder restaurar

alguem pode ajudar me nisto

sff

PS: a bd é em mysql

cumps

:cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

shell("C:\xampp\mysql\bin\mysqldump --opt --password=pass -user=root --database tua_bd -r c:\tuabd.sql") 

Atenção que o exemplo acima faz o backup mas não o encripta nem zipa nem nada. É apenas um exemplo para veres como funciona. Com mais calma modifico uma rotina de backup e restore e ponho-ta cá. Para já puxa um bocadinho pela broa que eu vou à janta! :cheesygrin:

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

comio disseste este exemplo nao grava em formato zip mas nao permite escolher a directoria onde vou querer gravar a bd

vai logo gravar no C:\xampp\mysql\bin\mysqldump

obrigado na mesma

cumps

:cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como é que fizeste isso??

Ele devia ter feito o dump da tuabd para c:\tuabd.sql

Não percebi a logica. Qualquer parametro da linha que de codigo que te indiquei pode ser passado como variaveis do tipo string, só precisa de um bocadinho de engenho e consegues fazer o backup para onde quizeres.

Se tiver tempo logo ainda coloco as rotinhas de backup e restore que uso. (É só o trabalho de as modificar um pouco)

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

para fazer o backup tenho alguma nocao do que e preciso fazer mas depois para restaurar bd, estou as aranhas

cumps

:cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

shell("C:\xampp\mysql\bin\mysql -u=root -p=password tuabd < c:\tuabd.sql") 

Assim já ficas com uma ideia. Ainda não tive 5 minutos para vir para aqui, modificar as sub's para as disponibilizar. Hoje tá a ser um dia de cão :(

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

fiz uma coisa assim mas nao me esta a fazer o backup aparece sempre a mensagem(Erro ao fazer cópia de segurança.Tente novamente, se o erro persistir reinicie o sistema)

Dim conexao As New MySqlConnection("server=127.0.0.1;user id=Administrador;password=programa;database=programa")

        Dim comando As New MySqlCommand()

        comando.Connection = conexao

        Try

            comando.CommandText = "BACKUP DATABASE programa to Disk = " & "C:" + "\programa.SQL" & ""

            conexao.Open()

            comando.ExecuteNonQuery()

            conexao.Close()

            MsgBox("Backup Realizado com Sucesso.", MsgBoxStyle.Information)

        Catch ex As Exception

            MsgBox("Erro ao fazer cópia de segurança.Tente novamente, se o erro persistir reinicie o sistema.", MsgBoxStyle.Information, "Erro")

        End Try

    End Sub

cumps :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

try

shell("C:\xampp\mysql\bin\mysqldump --opt --password=pass -user=root --database tua_bd -r c:\tuabd.sql")            

MsgBox("Backup Realizado com Sucesso.", MsgBoxStyle.Information)

        Catch ex As Exception

            MsgBox("Erro ao fazer cópia de segurança.Tente novamente, se o erro persistir reinicie o sistema.", MsgBoxStyle.Information, "Erro")

        End Try

    End Sub

Não percebi bem a tua sub, ela basicamente devia executar um comando SQL mas não executa nada. abre uma connecção a instrução SQL não é reconhecida, ele lança a excepção e dá erro, sem sequer fechar a connecção.

Como estavas a pensar fazer o backup??

Por shell comand o codigo fica semelhante ao que te deixei acima. Vou tentar ainda hoje por cá uma sub de backup e uma de restore, mas isto deve dar para veres como fazer backup da BD.

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja consegui fazer o backup mas vai gravar sempre no c:

a minha intencao era poder escolher a directoria onde guardar o backup

cumps

:(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Passas a path como uma variavel de texto. Vê este exemplo, foi escrito à pressa não tive tempo de o testar. Isto de estar com uma mão no teclado outra no garfo não tem assunto :(

dim dbbckpath as string
dim shellcomand as string
try
shellcomand = "C:\C:\xampp\mysql\bin\mysqldump --opt --password=pass -user=root --database tua_bd -r " & path & " ") "

MsgBox("Backup Realizado com Sucesso.", MsgBoxStyle.Information)

        Catch ex As Exception

            MsgBox("Erro ao fazer cópia de segurança.Tente novamente, se o erro persistir reinicie o sistema.", MsgBoxStyle.Information, "Erro")

        End Try

    End Sub

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

desculpa a minha ignorancia mas onde esta dbbckpath nao devia ser path?

porque nao vejo onde vou utilizar  variavel dbbckpath e o path nao foi declarado

cumps

:(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

como vais executar um comando externo via shell tens duas path a path até ao comando que vais executar no caso: C:\xampp\mysql\bin\mysqldump existe um par de erros por descuido meu. Abaixo deixo o codigo devidamente corrigido.

E a path de onde vai ficar o ficheiro com o backup que essa é definida pela variavel bdbckpath.

No codigo que deixo agora tens isso devidamente corrigido e documentado, atenção que eu atribuo o valor "c:\backup\tua_db.sql" à variavel dbbckpath, apenas por exemplo, esse valor pode vir de qualquer outro sitio.

dim dbbckpath as string
dim shellcomand as string
dbbckpath = "c:\backup\tua_db.sql"
try
shellcomand = "C:\xampp\mysql\bin\mysqldump --opt --password=pass -user=root --database tua_bd -r " & bdbckpath & " ") "
Shell  (shellcomand)

MsgBox("Backup Realizado com Sucesso.", MsgBoxStyle.Information)

        Catch ex As Exception

            MsgBox("Erro ao fazer cópia de segurança.Tente novamente, se o erro persistir reinicie o sistema.", MsgBoxStyle.Information, "Erro")

        End Try

    End Sub

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

assim vai continuar a gravar sempre no mesmo sitio,queria que o utilizador do programa podesse escolher o sitio

cumps

:(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Agora puxa pela cabeça....

Ele vai gravar na path que está no valor da variavel dbbckpath ou seja c:\backup\tua_db.sql

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim path As String
        FolderBrowserDialog1.ShowDialog()
        path = FolderBrowserDialog1.SelectedPath
        MsgBox(path, MsgBoxStyle.DefaultButton1, AcceptButton)
    End Sub

Camarada um bocadinho de estudo e tinhas feito tu isto :( Vá o google é um gajo muita fixe! ;)

Aqui tens o exemplo de uma sub que te deixa navegar entre todos os directorios possiveis para escolheres o directorio onde queres gravar o backup.

Agora puxa um bocadinho pela mona! Qualquer duvida diz ;)

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tens toda a razao, se tivesse feito um bocadinho de pesquisa provavelmente conseguia ter feito

desculpa, tenho andado com um bocado de preguiça

cumps

:(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não tens nada que pedir desculpa...  eu estava resingão porque estava a almoçar ;)

Tive de fazer aquela sub à pressa... com a pizza numa mão e o teclado na outra....

Não fui pesquizar, apenas puxei um bocadinho pela tola, e conclui que o objectivo era poder andar na arvore de directorios e escolher um, assim puxei um componente FolderBrowserDialog, e depois foi quase intuitivo.

Se entretanto acabares uma rotina funcional coloca cá :( Assim o resto do pessoal pode consultar.

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tenho quase pronto ,so esta a dar problemas em criar o ficheiro fisicamente

Dim shellcomand As String
        Dim dbbckpath As String
        Dim path As String
        FolderBrowserDialog1.ShowDialog()
        path = FolderBrowserDialog1.SelectedPath
        dbbckpath = path + " ginasio.sql"
        Try
            shellcomand = "C:\xampp\mysql\bin\mysqldump --opt --password=ginasio -user=Administrador --database ginasio -r " & dbbckpath & ")"
            Shell(shellcomand)

            MsgBox("Backup Realizado com Sucesso.", MsgBoxStyle.Information)

        Catch ex As Exception

            MsgBox("Erro ao fazer cópia de segurança.Tente novamente, se o erro persistir reinicie o sistema.", MsgBoxStyle.Information, "Erro")

        End Try

    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

    Dependendo da versão do windows que estiveres a utilizar o windows tem "algumas dores de barriga" no que diz respeito a gravar em determinados directorios. nomeadamente em C:\, C:\programas, c:\windows ... e por aí fora.

Experimenta gravar por exemplo para uma pen-drive, e coloca cá o erro que ele te está a dar ou uma imagem do erro.

Cumprimentos e parabens pelo codigo, aprendes-te rapido :(

P.S. Começa a colocar o codigo colorido, colocando no tag code o seguinte code=vbnet

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao me esta a dar nenhum erro,escolho a directoria e nao cria o ficheiro,

calculo que seja aqui que esta a dar problemas

dbbckpath = path + " ginasio.sql"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

    Tinhas um espaço a mais

    Instrução corrigida:

dbbckpath = path + "ginasio.sql" 

    A tua instrução:

dbbckpath = path + " ginasio.sql"

    Se comparares as duas vais ver que tems " ginasio.sql" ou seja se juntares toda a string ficas com por exempo "e:\backups\ ginasio.sql " o espaço antes do nome é que está a causar os problemas.

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pensava que nao fazia  diferença em por espaços a mais

ja corrigi e nao cria o ficheiro mas e por C:\Users\Rafa\Desktop\ginasio.sql ja cria

cumps

:(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

    Provavelmente estás  a usar Windows Vista ou Windows Seven. Qualquer um deles tem essa limitação. A não ser que a tua aplicação corra como administrador, ficas limitado a que directorios podes gravar dados. Existe uma solução para isso que já foi colocada num outro thread aqui no forum, mas não sei se funciona com Windows Seven.

Prodente será nas instruções do programa indicar ao utilizador que deve fazer o backup para uma unidade externa, e só pode gravar nos directorios dos seus documentos. Podes definir como valor predefinido a pasta Documentos do utilizador actual do S.O.

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tou a usar o windows vista

neste caso nao da para usar o openfiledialog?se usar aconteçe a mesma coisa do que o folderbrowserdialog?

cumps

:(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

    Provavelmente sim. O que está a acontecer tem a ver com o sistema operativo não permitir que as aplicações escrevam em determinados directorios. Supostamente por motivos de segurança. Na realidade não faço ideia de qual seja o verdadeiro motivo, mas segurança não é de certeza.

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tao vou  por para fazer o backup para os documentos do utilizador

depois para restaurar a bd qual e maneira mais facil?

cumps

:(

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