C# Mysql数据库备份、还原(MVC)
一、准备工作
1.电脑上要安装上mysql,并且已经配置好了环境变量。
二、公共代码
1.配置文件(该节点只是为备份、还原使用,数据库连接字符串有另外的节点)
<connectionStrings>
<add name="DapperConnection" connectionString="Database=testDta;data source=127.0.0.1;User Id=test;Password=123456;CharSet=utf8;port=3306" />
</connectionStrings>
2.获取数据库配置信息(全局变量)
//Mysql数据库连接字符串
static string dapperConnStr = ConfigurationManager.ConnectionStrings["DapperConnection"].ToString();
static string[] connArray = dapperConnStr.Split(';');
//获取Mysql的ip地址
static string ip = connArray[].Substring(connArray[].IndexOf('=') + );
//获取Mysql的用户名
static string user = connArray[].Substring(connArray[].IndexOf('=') + );
//获取Mysql的密码
static string password = connArray[].Substring(connArray[].IndexOf('=') + );
static string port = connArray[].Substring(connArray[].IndexOf('=') + );
//获取数据库
static string database = connArray[].Substring(connArray[].IndexOf('=') + );
3.执行命令代码
/// <summary>
/// 命令行操作
/// </summary>
/// <param name="command"></param>
/// <returns></returns>
private string RunCmd(string command)
{
Process p = new Process(); p.StartInfo.FileName = "cmd.exe"; //确定程序名
p.StartInfo.Arguments = "/c " + command; //确定程式命令行
p.StartInfo.UseShellExecute = false; //Shell的使用
p.StartInfo.RedirectStandardInput = true; //重定向输入
p.StartInfo.RedirectStandardOutput = true; //重定向输出
p.StartInfo.RedirectStandardError = true; //重定向输出错误
p.StartInfo.CreateNoWindow = true; //设置置不显示示窗口 //mySql安装路径
string mysqlPath = GetMysqlPath() + "bin";
p.StartInfo.WorkingDirectory = mysqlPath;
p.Start(); p.StandardInput.WriteLine(command); //输入入要行的命令 p.StandardInput.WriteLine("exit"); //退出
return p.StandardError.ReadToEnd();
}
4.获取mysql安装路径
/// <summary>
/// 获取MySql安装路径
/// </summary>
/// <returns></returns>
private string GetMysqlPath()
{
IDbConnection conn = new MySqlConnection(dapperConnStr); string strsql = "select @@basedir as basePath from dual ";
string strPath = conn.Query<string>(strsql).FirstOrDefault();
var o=conn.ExecuteScalar(strsql);
strPath = strPath.Replace("/", "\\");
return strPath;
}
三、备份代码
/// <summary>
/// 生成备份文件
/// </summary>
/// <returns></returns>
public ActionResult GenerateBackups()
{
try
{
using (NetEntities et = new NetEntities())
{
string fileName = Request["fileName"] + ".sql";
//此处需要查询数据库,以确保数据库名称的唯一性,省略
//还原数据库命令行示例:mysqldump -h 127.0.0.1 -utest -p123456 testDta > E:\\work\\download\\Database_Backup\\test.sql
string sqlAddress = "-h " + ip + " -u" + user + " -p" + password + " " + database;
using (SaveFileDialog sfd = new SaveFileDialog())
{
sfd.Filter = "数据库文件|*.sql";
sfd.FilterIndex = ;
sfd.RestoreDirectory = true;
sfd.FileName = fileName; string filePath = sfd.FileName;
string path = AppDomain.CurrentDomain.BaseDirectory + "download\\Database_Backup\\";
string cmd = "mysqldump " + sqlAddress + " > " + path + filePath + "";
string result = RunCmd(cmd); }
return Json("备份成功");
}
}
catch (Exception ex)
{
return Json("程序异常---"+ex.Message);
}
}
四、还原代码
/// <summary>
/// 还原备份
/// </summary>
/// <param name="fileName">备份数据库的名称</param>
/// <returns></returns>
public ActionResult RecoveryBackups(string fileName)
{
Response<string> _rsp = new Response<string>();
try
{
using (NetEntities et = new NetEntities())
{
StringBuilder sbcommand = new StringBuilder(); OpenFileDialog openFileDialog = new OpenFileDialog(); string directory = AppDomain.CurrentDomain.BaseDirectory + PublicInfo.Database_Backup + fileName;
//在文件路径后面加上""避免空格出现异常
//命令行完整示例:mysql --host=127.0.0.1 --default-character-set=utf8 --port=3306 --user=test --password=123456 testDta<E:\\work\\download\\Database_Backup\\test.sql
//命令(缩减)示例:mysql --host=10.10.50.23 --user=test --password=123456 testDta<E:\\work\\download\\Database_Backup\\test.sql(因为有些在my.ini文件中已经配置了默认项)
sbcommand.AppendFormat("mysql --host=" + ip + " --user=" + user + " --password=" + password + " " + database + "" + " <{0}", directory);
string command = sbcommand.ToString();
RunCmd(command);
_rsp.code = (int)EnumCode.调用成功;
_rsp.sub_msg = "还原成功"; return Json(_rsp);
}
}
catch (Exception ex)
{
_rsp.code = (int)EnumCode.程序异常;
_rsp.sub_msg = ex.Message;
LogHelper.WriteLog(classname, "RecoveryBackups", ex);
return Json(_rsp);
}
}
五、小结
1.我是在命令行输入命令,如果成功了之后,再去程序中进行拼写。

C# Mysql数据库备份、还原(MVC)的更多相关文章
- MySQL数据库备份还原(基于binlog的增量备份)
MySQL数据库备份还原(基于binlog的增量备份) 一.简介 1.增量备份 增量备份 是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件.这就意味 ...
- MySQL数据库备份还原
本文以CentOS 7 yum安装的MariaDB-server5.5为例,说明MySQL的几种 备份还原方式 将服务器A(192.168.1.100)上的数据库备份,还原到B(192.168.1.2 ...
- 使用mysqldump进行mysql数据库备份还原
mysqldump是mysql自带的备份还原工具,默认在安装目录的bin下 可通过cmd命令行启动,然后运行: 还原一个数据库: mysql -h 主机 -u 用户名 -p密码 数据库名 < 指 ...
- Linux下的Mysql数据库备份+还原
数据库备份: root@debian-mm:/home/debian-mm# mysqldump -u root -p Account > Account.sql Enter password: ...
- 阿里云mysql数据库备份还原
1.下载备份包 在rds的备份恢复中点击下载,在弹出的窗口中复制内网下载地址(前提是目标服务器与rds内网互通,否则请复制外网地址) 在目标服务器中执行如下命令进行下载: wget -c '复制的地址 ...
- [MySql] - 数据库备份还原
导出数据库到SQL方法: mysqldump.exe -u[USERNAME] -p[PASSWORD] -h [IP] jira --lock-all-tables > c:\db.sql m ...
- c#mysql数据库备份还原
1:引用dll MySql.Data.dll, MySqlbackup.dll 2:建一个数据连接静态类 public static class mysql { public static str ...
- mysql 数据库 备份 还原
参考资料: http://blog.51yip.com/mysql/139.html
- MySQL数据库备份和还原的常用命令
其实很多情况下mysql备份就是采用了这些命令,例如: mysql导入和导出数据 linux自动定时备份web程序和mysql数据库 备份MySQL数据库的命令 mysqldump -hhostnam ...
- Mysql数据库备份和还原常用的命令
Mysql数据库备份和还原常用的命令是进行Mysql数据库备份和还原的关键,没有命令,什么都无从做起,更谈不上什么备份还原,只有给系统这个命令,让它去执行,才能完成Mysql数据库备份和还原的操作,下 ...
随机推荐
- 为 Jupyter 添加目录
1.依次在 anaconda prompt 窗口中执行以下两句命令 pip install jupyter_contrib_nbextensions # 安装第三方包 jupyter contrib ...
- 实时通讯之Socket.io
WebSocket WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术.使用WebSocket,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成 ...
- MongoDB基础知识与常用命令
SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table collection 数据库表/集合 row document 数据记录行/文档 col ...
- POJ2536-Gopher II-(匈牙利算法)
题意:n只老鼠,m个洞,s秒逃命,逃命速度为v,一个洞只能保住一只老鼠,最少多少只老鼠会被老鹰抓到. 题解:找出每只老鼠有哪些洞可以保命,建立二分图,算出最大匹配,不是求保住命的老鼠,而是求被抓住的老 ...
- Pandas | 09 迭代
Pandas对象之间的基本迭代的行为取决于类型.当迭代一个系列时,它被视为数组式,基本迭代产生这些值.其他数据结构,如:DataFrame和Panel,遵循类似惯例,迭代对象的键. 简而言之,基本迭代 ...
- odoo技术笔记
接触odoo将近半年: 学到的知识点整理如下:
- dubbo-zookeeper demo解析图
- three.js 添加三维坐标系
//显示三维坐标系 ); scene.add(axis);
- 在Hadoop-3.1.2上安装HBase-2.2.1
目录 目录 1 1. 前言 3 2. 缩略语 3 3. 安装规划 3 3.1. 用户规划 3 3.2. 目录规划 4 4. 相关端口 4 5. 下载安装包 4 6. 修改配置文件 5 6.1. 修改策 ...
- 【HDU6216】 A Cubic number and A Cubic Number 和 广工的加强版
题目传送门_杭电版 题目传送门_广工版 广工版的是杭电版的加强版. 题意:判断一个质数是否是两个整数的立方差 ---- 数学题 题解: 根据立方差公式:\(a^3 - b^3 = (a - b)(a^ ...