You can find the same article in my dotnetspider article
                                                                        from the following link
                             
                        
                        Backup and Restore a MySQL Database in C#.NET
                        
                    
                    
                        The code sample automates the process of backing up and restoring a MySQL database.
                     
                        Create two batch files separately for backup(MySql_Backup.bat) and restore(MySql_Restore.bat).
                    
                    
                    MySql_Backup.bat
                    
                    
@ECHO off
cls
set DBchoice=%1%
set User=%2%
set Password=%3%
set pathchoice=%4%
@REM Remove double quotes from the path
@REM SET pathchoice=%pathchoice:"=%
@REM SET pathchoice=%pathchoice:"=%
mysqldump --add-drop-table -B %DBchoice% -u %User% --password=%Password%  > %pathchoice%
                    
                        
                        MySql_Restore.bat
                    
                    
@ECHO off
cls
set User=%1%
set Password=%2%
set DBchoice=%3%
set pathchoice=%4%
set hostIP=%5%
set toolPath=%6%
@REM Remove double quotes from the path
@REM SET pathchoice=%pathchoice:"=%
@REM SET pathchoice=%pathchoice:"=%
%toolPath%\mysql -u %User% -h%hostIP% --password=%Password% %DBchoice% < %pathchoice%
                    
                    
                    
                    
                    
                    
                    
                    Create the following method to execute the batch files with proper parameters
                    
                    
                    
                    /// <summary
    /// Author : Himasagar Kutikuppala
    ///A utility method that runs the batch file with supplied arguments.
    /// </summary 
    /// <param name="batchFileName">Name of the batch file that should be run</param>;
    /// <param name="argumentsToBatchFile">Arguments to the batch file</param>;
    /// <returns>;Status of running the batch file</returns>;
    protected bool ExecuteBatchFile(string batchFileName, string[] argumentsToBatchFile)
    {
        string argumentsString = string.Empty;
        try
        {
            //Add up all arguments as string with space separator between the arguments
            if (argumentsToBatchFile != null)
            {
                for (int count = 0; count < argumentsToBatchFile.Length; count++)
                {
                    argumentsString += " ";
                    argumentsString += argumentsToBatchFile[count];
                    //argumentsString += "\"";
                }
            }
            //Create process start information
            System.Diagnostics.ProcessStartInfo DBProcessStartInfo = new System.Diagnostics.ProcessStartInfo(batchFileName, argumentsString);
            //Redirect the output to standard window
            DBProcessStartInfo.RedirectStandardOutput = true;
            //The output display window need not be falshed onto the front.
            DBProcessStartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            DBProcessStartInfo.UseShellExecute = false;
            //Create the process and run it
            System.Diagnostics.Process dbProcess;
            dbProcess = System.Diagnostics.Process.Start(DBProcessStartInfo);
            //Catch the output text from the console so that if error happens, the output text can be logged.
            System.IO.StreamReader standardOutput = dbProcess.StandardOutput;
            /* Wait as long as the DB Backup or Restore or Repair is going on. 
            Ping once in every 2 seconds to check whether process is completed. */
            while (!dbProcess.HasExited)
                dbProcess.WaitForExit(2000);
            if (dbProcess.HasExited)
            {
                string consoleOutputText = standardOutput.ReadToEnd();
                //TODO - log consoleOutputText to the log file.
            }
            return true;
        }
        // Catch the SQL exception and throw the customized exception made out of that
        catch (SqlException ex)
        {
            ExceptionManager.Publish(ex);
            throw SQLExceptionClassHelper.GetCustomMsSqlException(ex.Number);
        }
        // Catch all general exceptions
        catch (Exception ex)
        {
            ExceptionManager.Publish(ex);
            throw new CustomizedException(ARCExceptionManager.ErrorCodeConstants.generalError, ex.Message);
        }
    }