一、备份MySQL数据库核心代码如下:
//调用mysqldump备份mysql数据库的语句
string backupsql = string.Format("mysqldump --host={0} --default-character-set=utf8 --lock-tables --routines --force --port=3306 --user={1} --password={2} --quick ", "MySQL数据库服务器", "数据库的账号", "数据库密码");
//mysqldump的路径
string mysqldump = "C:\\Program Files\\MySQL\\MySQL Server 5.6\\bin";
//需要备份的数据库名称
string strDB = "bj_devicegovern";
//备份数据库的路径
string strDBpath = @"C:\EquipmentMonitoring_BRH\MySQL5.6DBBackup\";
//判断备份的数据库路径是否存在
if (!Directory.Exists(strDBpath))
{
Directory.CreateDirectory(strDBpath);
}
//备份数据库
if (!string.IsNullOrEmpty(strDB))
{
string filePath = strDBpath + DateTime.Now.ToString("yyyyMMdd_HHmmss") + strDB + ".sql";
string cmd = backupsql + strDB + " >" + filePath;
string result = RunCmd(mysqldump, cmd);
MessageBox.Show("数据库备份成功!", "提示");
}
二、还原MySQL数据库的核心代码如下:
//调用系统打开窗口控件选择文件路径
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
//调用mysqldump备份mysql数据库的语句
string backupsql = string.Format("mysql --host={0} --default-character-set=utf8 --port=3306 --user={1} --password={2} ", "127.0.0.1", "root", "123456");
//mysql的路径
string mysqldump = "C:\\Program Files\\MySQL\\MySQL Server 5.6\\bin";
//需要备份的数据库名称
string strDB = "bj_devicegovern";
string filePath = ofd.FileName;
MessageBox.Show(filePath,"当前选择的路径1");
string cmd = backupsql+ strDB + " < \"" + filePath + "\"";
string result = RunCmd(mysqldump, cmd);
MessageBox.Show("数据库恢复成功!", "MySQL", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
三、调用MySQL的工具mysqldump工具执行命令核心代码如下:
/// <summary>
/// MySQL的mysqldump程序执行函数
/// </summary>
/// <param name="mysqldumPath">mysqldum工具路径</param>
/// <param name="strCmd">cmd命令</param>
/// <returns></returns>
private string RunCmd(string mysqldumPath, string strCmd)
{
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.WorkingDirectory = mysqldumPath;
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");
return p.StandardError.ReadToEnd();
}
四、实现每天定时自动备份数据库
/// <summary>
/// 定时备份数据库(这里指定在每天的下午5点15分准时备份数据库)
/// </summary>
private void FixedTimeBackupDB()
{
string lastRunTime = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
DateTime t1 = Convert.ToDateTime(lastRunTime);
string currentTime = DateTime.Now.ToString("yyyy-MM-dd");
DateTime t2 = Convert.ToDateTime(currentTime);
int result = DateTime.Compare(t1, t2);
DateTime dtNow = DateTime.Now;
if (result<=0 && DateTime.Now.Hour == 17 && DateTime.Now.Minute==15)
{
lastRunTime = DateTime.Now.ToString("yyyy-MM-dd");
//开始备份数据
MessageBox.Show("开始备份数据库=" + DateTime.Now.ToString(), "提示");
}
}
五、在窗口初始化的时候调用自动备份脚本
public Form1()
{
InitializeComponent();
//定时任务程序
Task.Run(() =>
{
while (true)
{
//每50秒休眠一次
Thread.Sleep(50000);
FixedTimeBackupDB();
}
});
}
注意:需要使用者已经安装配置了MySql数据库,并且数据库存在需要备份的数据库;我这里使用的MySQL数据库是5.6版本的,默认安装的环境路径如下所示:
本项目源码链接如下:https://download.csdn.net/download/xiaochenxihua/11005123
参考链接:https://www.jb51.net/article/135724.htm
https://www.cnblogs.com/chenzehe/archive/2009/05/10/1453621.html
http://www.cnblogs.com/xielong/p/9383058.html