Резервное копирование базы данных MySQL в VB.Net - PullRequest
2 голосов
/ 10 октября 2008

Как создать резервную копию базы данных mysql в VB.Net?

Ответы [ 7 ]

7 голосов
/ 23 декабря 2012

Вы можете использовать MySqlBackup.NET , который является альтернативой mysqldump.

Официальный сайт и документация> https://github.com/MySqlBackupNET/MySqlBackup.Net

Примеры:

Резервное копирование базы данных MySql

Dim conn As MySqlConnection = New MySqlConnection(constr)
Dim cmd As MySqlCommand = New MySqlCommand
cmd.Connection = conn
conn.Open
Dim mb As MySqlBackup = New MySqlBackup(cmd)
mb.ExportToFile("C:\backup.sql")
conn.Close

Восстановление базы данных MySql

Dim conn As MySqlConnection = New MySqlConnection(constr)
Dim cmd As MySqlCommand = New MySqlCommand
cmd.Connection = conn
conn.Open
Dim mb As MySqlBackup = New MySqlBackup(cmd)
mb.ImportFromFile("C:\backup.sql")
conn.Close

Я один из авторов этого проекта.

1 голос
/ 17 марта 2015

Используйте этот код. У меня это работает.

У меня была такая проблема, а потом я нашел эту статью

"http://www.experts -exchange.com / Программирование / Языки / .NET / Q_27155602.html "

Пример был на C #. Я вручную преобразовал его в vb.net и добавил преобразование в 'utf8'.

Imports System.Text
Public Class Form1
    Dim OutputStream As System.IO.StreamWriter
    Sub OnDataReceived1(ByVal Sender As Object, ByVal e As    System.Diagnostics.DataReceivedEventArgs)
        If e.Data IsNot Nothing Then
            Dim text As String = e.Data
            Dim bytes As Byte() = Encoding.Default.GetBytes(text)
            text = Encoding.UTF8.GetString(bytes)
            OutputStream.WriteLine(text)
           End If
    End Sub

   Sub CreateBackup()
        Dim mysqldumpPath As String = "d:\mysqldump.exe"
        Dim host As String = "localhost"
        Dim user As String = "root"
        Dim pswd As String = "Yourpwd"
        Dim dbnm As String = "BaseName"
        Dim cmd As String = String.Format("-h{0} -u{1} -p{2} {3}", host, user, pswd, dbnm)
        Dim filePath As String = "d:\backup\fieName.sql"
        OutputStream = New System.IO.StreamWriter(filePath, False, System.Text.Encoding.UTF8)

        Dim startInfo As System.Diagnostics.ProcessStartInfo = New System.Diagnostics.ProcessStartInfo()
        startInfo.FileName = mysqldumpPath
        startInfo.Arguments = cmd

        startInfo.RedirectStandardError = True
        startInfo.RedirectStandardInput = False
        startInfo.RedirectStandardOutput = True 
        startInfo.UseShellExecute = False
        startInfo.CreateNoWindow = True
        startInfo.ErrorDialog = False

        Dim proc As System.Diagnostics.Process = New    System.Diagnostics.Process()
        proc.StartInfo = startInfo
        AddHandler proc.OutputDataReceived, AddressOf OnDataReceived1
        proc.Start()
        proc.BeginOutputReadLine()
        proc.WaitForExit()

       OutputStream.Flush()
       OutputStream.Close()
        proc.Close()
    End Sub

     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As      System.EventArgs) Handles MyBase.Load

        CreateBackup()

     End Sub
   End Class
1 голос
/ 02 ноября 2008

Я обнаружил, что самым простым способом было использовать mysqldump.exe, который является автономным приложением.

mysqldump --host=[HOSTNAME] --user=[USER] --password=[PASSWORD] -R [DATABASE NAME] > [PATH TO BACKUP FILE]

У нас были проблемы с резервными копиями, не сохраняющими функции БД, но ключ -R сортировал их, поэтому id рекомендуется использовать, если вы используете хранимые процедуры или функции в вашей БД.

для восстановления созданного файла используйте команду mysql.

mysql --host=[HOSTNAME] --user=[USER] --password=[PASSWORD] [DATABASE NAME] < [PATH TO BACKUP FILE]
1 голос
/ 10 октября 2008

вы можете вызвать mysqldump, но вам может потребоваться запустить VB.NET на сервере Mysql.

0 голосов
/ 19 февраля 2013

Это то, что я использую для резервного копирования данных на MySQL. Я делаю копию mysqldump.exe и mysql.exe и сохраняю ее на моем LIB_PATH, тогда следующий код создаст резервную копию ваших данных. Вы можете указать свой каталог mysqldump.exe и назначить его для LIB_PATH, указать свои данные для входа в систему в разделе «Аргументы», а затем указать свой выходной каталог, мой - BACKUP_DIR, и я использую предварительно отформатированный Now () в качестве имени моего файла. Код довольно прост. Гудлак

    Using myProcess As New Process()
        Dim newfiledb As String = BACKUPDIR_PATH & Format(Now(), "MMM_dd_yyyy@h~mm_tt").ToString & "_local.sql"
        Try
            myProcess.StartInfo.FileName = "mysqldump.exe"
            myProcess.StartInfo.WorkingDirectory = LIB_PATH
            myProcess.StartInfo.Arguments = "--host=localhost --user=username --password=yourpassword yourdatabase -r " & newfiledb
            myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
            myProcess.Start()
            myProcess.WaitForExit()
            MsgBox("Backup Created ... " & vbNewLine & newfiledb)
        Catch ex As Exception
            MsgBox(ex.Message, vbCritical + vbOKOnly, ex.Message)
        Finally
            myProcess.Close()
        End Try
    End Using
0 голосов
/ 30 октября 2008

Я бы написал хранимый процесс, так как MySQL 5 поддерживает их, который обрабатывает все данные «тяжелой» работы. Затем просто создайте запланированное задание, которое вызывает процедуру каждую «ночь». Для этого последнего компонента я настоятельно рекомендую Powershell .... он потрясающий.

0 голосов
/ 17 октября 2008

Вы можете прочитать данные каждой таблицы и записать их в новую базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...