一、操作环境
1、Net Core3.1
2、Visual Studio 2022 企业版
3、Mysql5.6
4、Dapper 2.0.78
二、来个图提个神
三、上代码
(~ ̄(OO) ̄)ブ
备份代码,核心就是调用mysql的备份命令
controller层
[Route("/database/backup_db")] public JsonResult BackupDB() { try { string server = "127.0.0.1"; string port = "3306"; string user_name = "sa"; string user_pass = "sa123$"; string data_base_name = "yadinghao"; string backup_filename = Tools.GetDateTimeNoSplit() + "yadinghao.sql"; string relativePath = $@"\\backup\\"; string filePath = _Environment.WebRootPath + relativePath; if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } string back_up_folder = filePath + backup_filename; new MySqlAccess().BackUpDb(server, port, user_name, user_pass, data_base_name, back_up_folder); return JsonResultRight("备份成功"); } catch (Exception ex) { return JsonResultError("备份失败" + ex.Message); } }
C#执行dos命令。
data层
public bool BackUpDb(string server, string port, string user, string pwd, string dbname, string folder) { try { string str_sql = string.Format("mysqldump -h {0} -P {1} -u {2} -p{3} --databases {4} > {5}", server, port, user, pwd, dbname, folder); string myDumpToolPath = @"C:\Program Files\MySQL\MySQL Server 5.6\bin"; Tools.ExecuteDosCommad(myDumpToolPath, str_sql); return true; } catch (Exception ex) { return false; } }
这里需要注意的参数string strPath。他是你备份机器的mysql安装路径。net比较垃圾他的根路径居然是项目的路径,而不是系统的路径。
public static string ExecuteDosCommad(string strPath, string strcmd) { Process p = new Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.WorkingDirectory = strPath; 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(strcmd); p.StandardInput.WriteLine("exit"); string output = p.StandardOutput.ReadToEnd(); string myError = p.StandardError.ReadToEnd(); p.WaitForExit();//等待程序执行完退出进程 p.Close(); return myError; }