我有一个带有MySQL数据库的ASP.NET Web应用程序。 我的用户希望在点击按钮时备份他们的数据。 我该怎么做?
我正在考虑使用mysqldump创建数据库并让用户下载此文件。 但这是最简单的方法吗?性能怎么样?我目前有250名用户同时使用Web应用程序。所以当他们都按下备份按钮时...我不想让我的服务器在创建备份时挂起。
有没有人有想法?
THX
答案 0 :(得分:1)
您可以尝试使用此工具: MySqlBackup.NET ,它是MySqlDump的替代品。
官方网站&文档> http://mysqlbackupnet.codeplex.com/
备份&下载MySQL数据库
void Backup()
{
string connection = "server=localhost;user=root;pwd=qwerty;database=test;";
string fileOnDisk = HttpContext.Current.Server.MapPath("~/MyDumpFile.sql");
// Example Result: C:\inetpub\wwwroot\MyDumpFile.sql
string fileOnWeb = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority)
+ "/MyDumpFile.sql";
// Example Result: http://www.mywebsite.com/MyDumpFile.sql
// Backup MySQL Database
MySqlBackup mb = new MySqlBackup(connection);
mb.ExportInfo.FileName = fileOnDisk;
mb.Export();
// Download the file
Response.ContentType = "text/plain";
Response.AppendHeader("Content-Disposition", "attachment; filename=MyDumpFile.sql");
Response.TransmitFile(fileOnDisk);
Response.End();
}
恢复MySQL数据库
void Restore()
{
string connection = "server=localhost;user=root;pwd=qwerty;database=test;";
string fileOnDisk = HttpContext.Current.Server.MapPath("~/MyDumpFile.sql");
string fileOnWeb = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority)
+ "/MyDumpFile.sql";
// Upload the file
if (FileUpload1.HasFile)
{
FileUpload1.SaveAs(fileOnDisk);
MySqlBackup mb = new MySqlBackup(connection);
mb.ImportInfo.FileName = fileOnDisk;
mb.Import();
Response.Write("Import Successfully");
}
}
从上面的例子中, MySqlBackup.NET 将创建一个文件名 MyDumpFile.sql (导出的MySQL数据库)。
您可以将文件缓存5或10分钟。如果任何用户想要在创建后的5或10分钟内获得导出的MySQL备份文件,则将传输缓存文件供他/她下载。如果超过5或10分钟,将再次生成新的缓存文件。
我是这个工具的作者之一。