2008-10-10 6 views

ответ

1

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

0

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

0

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

1

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

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

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

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

mysql --host=[HOSTNAME] --user=[USER] --password=[PASSWORD] [DATABASE NAME] < [PATH TO BACKUP FILE] 
7

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

Официальный сайт & Документация>http://mysqlbackupnet.codeplex.com

Примеры:

резервного копирования базы данных 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 

Я являюсь одним из авторов этого проекта.

+0

Я продолжаю получать эту ошибку: в System.Windows.Forms произошло необработанное исключение типа «System.IO.FileLoadException».dll Дополнительная информация: Не удалось загрузить файл или сборку 'MySqlBackup, Version = 2.0.9.2, Culture = neutral, PublicKeyToken = null' или одну из его зависимостей. Требуется строго названная сборка. (Исключение из HRESULT: 0x80131044) – 2016-11-01 19:37:22

0

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

Using myProcess As New Process() 
     Dim newfiledb As String = BACKUPDIR_PATH & Format(Now(), "[email protected]~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 
1

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

я имел такую ​​проблему, а затем нашел эту статью

"http://www.experts-exchange.com/Programming/Languages/.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 
Смежные вопросы