Copias de seguridad en MySql

C#
Autor: Dámaso Velázquez Álvarez

Con el siguiente código vamos a ver cómo realizar copias de seguridad desde la interfaz de usuario, a través de mysqldump de MySql. Puede resultarnos útil a la hora de incluir un módulo de copias de seguridad en una aplicación de gestión.

Como requisito previo, tenemos que tener mysqldump accesible desde el path del sistema.

Vamos a crear un proceso con la ejecución de mysqldump y vamos a redireccionar la salida de dicho proceso a un objeto de la clase StreamReader, que posteriormente utilizaremos en un objeto de la clase TextWriter. El objeto de la clase TextWriter irá almacenando cada una de las líneas de la salida del proceso en el fichero donde vamos a almacenar la copia de seguridad.

En el constructor del objeto TextWriter hemos especificado la codificación Encoding.Default, ya que de esa forma podremos restaurar la copia de seguridad desde una terminal de MS-DOS.

El método es el siguiente:

private void copia_de_seguridad()
{
   try
   {
      SaveFileDialog fd;
      fd = new SaveFileDialog();
      DialogResult dialogo;
      dialogo = fd.ShowDialog();
      if (dialogo == DialogResult.OK)
      {
         if (fd.FileName != String.Empty)
         {
            String linea;
            fichero = fd.FileName;
            System.Diagnostics.Process proc = new System.Diagnostics.Process();
            proc.EnableRaisingEvents = false;
            proc.StartInfo.UseShellExecute = false;
            proc.StartInfo.RedirectStandardOutput = true;
            proc.StartInfo.FileName = "mysqldump";
            proc.StartInfo.Arguments = "base_datos --single-transaction --host=ip_del_servidor --user=usuario --password=clave";
            Process miProceso;
            miProceso = Process.Start(proc.StartInfo);
            StreamReader sr = miProceso.StandardOutput;
            TextWriter tw = new StreamWriter(fd.FileName,false,Encoding.Default);
            while ((linea = sr.ReadLine()) != null)
            {
               tw.WriteLine(linea);
            }
            tw.Close();
            MessageBox.Show("Copia de seguridad realizada con éxito");
         }
      }
   }
   catch (Exception exc)
   {
      MessageBox.Show("Se ha producido un error al realizar la copia de seguridad");
   }
}

Podría interesarte...

Restaurar una copia de seguridad de MySql
Ejemplo en el que se muestra cómo restaurar una copia de seguridad generada con mysqldump desde una aplicación C#
Script de copias de seguridad desde MS-DOS usando mysqldump
A través del siguiente script podremos hacer copias de seguridad de nuestra base de datos MySql con el comando ...