在.net 中实现Mysql的备份

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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值