我的任务是为Mysql备份和恢复编写c#.net代码。
备份从服务器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");
}
}
发布于 2017-08-19 05:30:21
我已经编写了一个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();
}
}
}
https://stackoverflow.com/questions/40536913
复制