2016-11-10 143 views
0

我的任务是为Mysql Backup and Restore编写c#.net代码。C#MySqL恢复代码

从服务器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

[MySQL数据的PHP定期备份(可能的重复http://stackoverflow.com/questions/38916163/php-regular-backup-of-mysql-数据) – e4c5

回答

0

我写了一个C#机库:MySqlBackup.NET
项目网址: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(); 
     } 
    } 
}