相对像我这种mysql菜鸟,经常会碰到很多问题,不断研究,才是王道啊,今天再研究了下.net下的mysql备份,才发现,昨天的研究,还未足够。嘿嘿。
try
{
Model.K_SystemConfig model = bll_Config.GetModel(Guid.Empty);
string filename = DateTime.Now.ToString().Replace("-", "").Replace(":", "").Replace(" ", "");
string filePath = Server.MapPath(ResolveUrl("~/DataBackUp/"));
string fileName = filePath + filename + ".sql";
if (!System.IO.Directory.Exists(fileName))
{
System.IO.Directory.CreateDirectory(filePath);
}
String command = string.Format("mysqldump --quick --host=localhost --default-character-set=utf8 --lock-all-tables --port=3306 --user={0} --password={1} --databases etm_one -R >{2}", model.BackUp_DBUserName, model.BackUp_Pwd, fileName);
String appDirecroty = @""+model.BackUp_BinPath+"";
string str;
dbh.StartCmd(appDirecroty, command );
PageHelp.WriteLog((UserInfo)Session["userinfo"], string.Format("备份数据:{0}。", filename + ".sql"), string.Format("备份数据:{0}。", filename + ".sql"), lbTitle.Text.Trim());
WebUtility.ShowMessageAndRedirect("备份数据成功!","DataBackUp.aspx?navid=" + Request.QueryString["navId"], this.Page);
//DefaultBind();
}
catch (Exception ex)
{
WebUtility.ShowMessage("备份数据出错!", this.Page);
}
public void StartCmd(string workingDirectory, string command )
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.WorkingDirectory = workingDirectory;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardInput.WriteLine(command);
p.StandardInput.WriteLine("exit");
}
昨天研究了下mysql的备份,疑惑和郁闷很多,今天才是正餐,在.net上实现mysql的数据库备份,代码如上。已测试运行正常,得到的备份文件,也正常还原,不用什么改动,相对昨天,今天这代码没出现什么错误,还原时,也不用再去修改备份文件。
String command = string.Format("mysqldump --quick --host=localhost --default-character-set=utf8 --lock-all-tables --port=3306 --user={0} --password={1} --databases etm_one -R >{2}", model.BackUp_DBUserName, model.BackUp_Pwd, fileName);
这条命令,会在备份文件前面引用数据库,而不用我们再手工去加use databasename,而且-R参数,可以导出存储过程。现在,这个备份才算得上真正的备份,表、视图、存储过程、表数据全部备份了。