Respaldar y restaurar bases de datos MySQL en C#
Podemos respaldar bases de datos MySQL gracias a los archivos de volcado que contienen toda la estructura de nuestra base de datos incluyendo los registros, aquí de dejo un tutorial para realizar respaldos y restaurar bases de datos completas en C#.
Para ello vamos a requerir de una librería llamada MySqlBackup.Net que podemos descargar desde su repositorio oficial en GitHub siguiendo este enlace, una vez descargada la vamos a añadir las referencias a MySqlData y MySqlBackup a nuestro proyecto.
Respaldar la base de datos
En comparación con mi tutorial anterior para respaldar bases de datos MySQL desde Java, esta librería nos hace más fácil esta tarea ya que basta con usar nuestra misma conexión a nuestra base de datos y el nombre o ruta del archivo final, para que nos genere un volcado completo de nuestra base de datos.
Vamos a codificar el método de respaldo de nuestra base de datos, para ello utilizare una clase aparte, donde tengo mi conexión a mi base de datos y solo creo un método llamado
respaldo(string ruta)
, donde la ruta es el directorio a donde se guardara mi volcado, el código sera el siguiente:
1 2 3 4 5 6 7 8 9 10 | public void respaldo (string ruta){ using (MySqlCommand cmd = new MySqlCommand()){ using (MySqlBackup mb = new MySqlBackup(cmd)){ cmd.Connection = SQLConnection(); /*Con el siguiente metodo se va a realizar la exportación del archivo de volcado de acuerdo al nombre o ruta que le hayamos puesto*/ mb.ExportToFile(ruta); } } } |
Al final el programa nos genera el archivo de volcado en la ruta que le especificamos o en el mismo directorio con el nombre que le hayamos especificado.
Restaurar base de datos
De igual forma para restaurar nuestra base de datos a partir del archivo de volcado vamos a crear un método llamado
restaurar(string ruta)
donde ruta es el directorio de nuestro archivo de volcado, el código quedaría de la siguiente forma, nota que agrego el código en mi misma clase
database.cs
.
1 2 3 4 5 6 7 8 9 10 | public void restaurar(string ruta){ using (MySqlCommand cmd = new MySqlCommand()){ using (MySqlBackup mb = new MySqlBackup(cmd)){ cmd.Connection = SQLConnection(); /*Con la siguiente linea que recibe como argumento la ruta del archivo de volcado, se va a intentar restaurar la base de datos*/ mb.ImportFromFile(ruta); } } } |
El proceso de restauración puede ser un poco tardado, dependiendo que tan grande sea tu base de datos y la cantidad de registros que existan en ella.
Al final mi clase
database.cs
quedara de la siguiente forma
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | public class database{ public MySqlConnection SQLConnection(){ /*Utilizando MysqlConnectrionStringBuilder vay a generar una sentencia para mi conexión a mi base de datos*/ MySqlConnectionStringBuilder sb = new MySqlConnectionStringBuilder(); sb.Server = "localhost";//la IP o dominio de tu servidor sb.Database = "pruebas";//el nombre te la base de datos sb.UserID = "root";//el usuario de la base de datos sb.Password = "2362";//la contraseña de la base de datos //sb.SslMode = MySqlSslMode.None; MySqlConnection conn = new MySqlConnection(sb.ToString()); conn.Open(); return conn; } /// <summary> /// Metodo para generar un volcado de una base de datos MySQL /// </summary> /// <param name="ruta"> La ruta a donde se almacenara el archivo .sql</param> public void respaldo (string ruta){ using (MySqlCommand cmd = new MySqlCommand()){ using (MySqlBackup mb = new MySqlBackup(cmd)){ cmd.Connection = SQLConnection(); /*Con el siguiente metodo se va a realizar la exportación del archivo de volcado de acuerdo al nombre o ruta que le hayamos puesto*/ mb.ExportToFile(ruta); } } } /// <summary> /// Metodo para restaurar una base de datos desde un archivo de volcado /// </summary> /// <param name="ruta"> La ruta del archivo de volcado .sql</param> public void restaurar(string ruta){ using (MySqlCommand cmd = new MySqlCommand()){ using (MySqlBackup mb = new MySqlBackup(cmd)){ cmd.Connection = SQLConnection(); /*Con la siguiente linea que recibe como argumento la ruta del archivo de volcado, se va a intentar restaurar la base de datos*/ mb.ImportFromFile(ruta); } } } } |
Para finalizar solo hay que crear una instancia de nuestra clase y llamar nuestros métodos, yo recomendaría utilizar un
OpenFileDialog
y un
SaveFileDialog
para la selección y guardado de datos tal como lo hice en el programa de ejemplo que puedes descargar.
Código fuente
Puedes descargar un proyecto de ejemplo hecho con WinForms, para utilizarlo solo cambia los datos con los de tu base de datos en la clase database.cs.
Recuerda descargar las librerías y añadirlas al proyecto para que funcione.
Como acabas de ver, respaldar bases de datos MySQL es más sencillo de hacer gracias a esta librería.
¿dudas? Por favor comenta trataremos de darle una solución y recuerda activar las notificaciones de este blog para recibir más tutoriales.