在.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参数,可以导出存储过程。现在,这个备份才算得上真正的备份,表、视图、存储过程、表数据全部备份了。



原创粉丝点击