如何执行mysql服务器的大型数据库备份

时间:2013-10-25 07:21:45

标签: c# asp.net mysql-backup

我正在创建一个Web应用程序。 在该应用程序中,我需要备份许多MySQL数据库。

为此,我创建了一个选项,它可以在小型数据库上正常工作但是低谷例外 Out of memory exception用于大型数据库。

注意: - Web服务器和数据库服务器上都有足够的可用磁盘空间。

还有一段时间它工作得非常好,有时它会创建1 kb大小的备份文件。

备份程序

public static string DatabaseBackup(string ExeLocation,
    string DBName,
    string Ip,
    string Uid,
    string Pass,
    string FileNm)
{
    string status = "";
    try
    {
        StreamWriter file = new StreamWriter(FileNm);
        ProcessStartInfo proc = new ProcessStartInfo();
        string cmd = string.Format(@"-u{0} -p{1} -h{2} {3}", Uid, Pass, Ip, DBName);
        proc.FileName = ExeLocation;
        proc.RedirectStandardInput = false;
        proc.RedirectStandardOutput = true;
        proc.Arguments = cmd;
        proc.UseShellExecute = false;
        proc.CreateNoWindow = true;
        Process p = Process.Start(proc);
        string res;
        res = p.StandardOutput.ReadToEnd();
        file.WriteLine(res);
        p.WaitForExit();
        file.Close();
        status = "OK";
    }
    catch (Exception ex)
    {
        status = ex.Message;
    }
    return status;
}

任何人都可以帮助我解决问题,如何解决这两个问题。

1 个答案:

答案 0 :(得分:1)

如果您正在阅读的文件比您的可用内存大,则会抛出异常。在本文中查看如何处理大型文件以及如何防止内存不足异常C# FileStream : Optimal buffer size for writing large files?