我有一个 ASP.NET Web 应用程序,后面有一个 MySQL 数据库。我的用户希望在单击按钮时备份他们的数据。我该怎么做?
我正在考虑使用 mysqldump 创建一个数据库并让用户下载这个文件。但这是最简单的方法吗?那么性能呢?我目前有 250 名用户同时使用 Web 应用程序。所以当他们都按下备份按钮时......我不想让我的服务器在创建备份时挂起。
有人有想法吗?
谢谢
你可以试试这个工具: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 分钟,将再次生成新的缓存文件。
我是这个工具的作者之一。