2

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

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

有人有想法吗?

谢谢

4

1 回答 1

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

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

于 2012-12-22T15:26:34.690 回答