在.net 中实现Mysql的备份
来源:互联网 发布:js上传文件 编辑:程序博客网 时间:2024/06/05 10:37
相对像我这种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参数,可以导出存储过程。现在,这个备份才算得上真正的备份,表、视图、存储过程、表数据全部备份了。