2016-11-10 2 views
0

Мне поручено написать код C# .net для Mysql Backup and Restore.C# MySqL restore Код

Резервная копия взята с сервера A и восстановлена ​​на сервере B. Код написан, он отлично выполняет резервное копирование. Но Восстановления не происходит. Я поместил ту же командную строку из кода C# в командную строку и выполнил ее. Он восстанавливается оттуда. Но не C# -программа. Пожалуйста, помогите мне в определении ошибки, которую я делаю.

static public void restore(string ip, string user, string password, string[] tblList, string sourcedb, string targetdb)  
{ 

    try 
    { 
     string basecmd; 
     basecmd = "/c mysql -h {0} -u {1} -p{2} {3} < {4}.sql"; 


     foreach (string s in tblList) 
     { 


      string db_tbl = sourcedb + "_" + s; 

      string cmd = String.Format(basecmd, ip, user, pass, targetdb, db_tbl); 
      //cmd = cmd + " >error1234.txt"; 
      System.Threading.Thread.Sleep(1000); 
      Console.WriteLine(cmd); 

      //System.Diagnostics.Process.Start("cmd.exe", cmd); 

      System.Diagnostics.ProcessStartInfo procStartInfo = 
       new System.Diagnostics.ProcessStartInfo("cmd", cmd); 

      procStartInfo.UseShellExecute = false; 
      procStartInfo.CreateNoWindow = true; 
      System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
      proc.StartInfo = procStartInfo; 
      proc.Start(); 
      //sendSuccesEmail(); 
     } 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex); 
     Console.WriteLine("pause"); 
    } 


} 
+0

Возможного дубликат [PHP регулярного резервного копирования данных тузды] (http://stackoverflow.com/questions/38916163/php-regular-backup-of-mysql- данные) – e4c5

ответ

0

Я написал C# родной библиотеки: MySqlBackup.NET
URL проекта: https://github.com/adriancs2/MySqlBackup.Net

Вы можете дать ему попробовать. Ниже приведен пример код, который будет выполнять вашу задачу

string dbSource = "server=192.168.1.100;user=root;pwd=1234;database=db1;"; 
string dbTarget = "server=192.168.1.200;user=root;pwd=1234;database=db1;"; 

string sqlDump = ""; 

// Backup from source database 
using (MySqlConnection conn = new MySqlConnection(dbSource)) 
{ 
    using (MySqlCommand cmd = new MySqlCommand()) 
    { 
     using (MySqlBackup mb = new MySqlBackup(cmd)) 
     { 
      conn.Open(); 
      cmd.Connection = conn; 

      sqlDump = mb.ExportToString(); 

      conn.Close(); 
     } 
    } 
} 

// Restore to target database 
using (MySqlConnection conn = new MySqlConnection(dbTarget)) 
{ 
    using (MySqlCommand cmd = new MySqlCommand()) 
    { 
     using (MySqlBackup mb = new MySqlBackup(cmd)) 
     { 
      conn.Open(); 
      cmd.Connection = conn; 

      mb.ImportFromString(sqlDump); 

      conn.Close(); 
     } 
    } 
}