如何让用户在Web应用程序中备份其数据?

时间:2012-12-17 23:08:26

标签: c# asp.net mysql

我有一个带有MySQL数据库的ASP.NET Web应用程序。 我的用户希望在点击按钮时备份他们的数据。 我该怎么做?

我正在考虑使用mysqldump创建数据库并让用户下载此文件。 但这是最简单的方法吗?性能怎么样?我目前有250名用户同时使用Web应用程序。所以当他们都按下备份按钮时...我不想让我的服务器在创建备份时挂起。

有没有人有想法?

THX

1 个答案:

答案 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分钟,将再次生成新的缓存文件。

我是这个工具的作者之一。