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");
   }
}
Quizá te interese...
Deja un comentario...
Suscribirme
Notificación de
guest
0 Comentarios
Comentarios en línea
Ver todos los comentarios