Esta es una forma sencilla de respaldar bases de datos MySQL desde Java generado los llamados dumpfiles o archivos de volcado de extensión .sql.

Para ello no tenemos soluciones puras en Java, pero podemos realizar esta operación por medio de herramientas que el mismo MySQL Server nos brinda que se llama mysqldump.

Ubicar las herramientas necesarias

Si tienes MySQL Server instalado, puedes buscar en el siguiente directorio C:\Program Files\MySQL\MySQL Server 8.0\bin  el ejecutable mysqldump.exe, mysql.exe y sus .dll, copia ambos archivos así como todas las .dll y crear una carpeta /bin/ en tu proyecto, en donde copiaras todos esos archivos.

Ya que tengas las herramientas copiadas en la carpeta de tu proyecto vamos a realizar la codificación.

Respaldar la base de datos

De acuerdo a la documentación de mysqldump debemos realizar las operaciones por comandos que ahí mismo especifica, utilizando ese documento como referencia a continuación te dejo la linea que nos permitirá realizar un volcado de nuestra base de datos:

mysqldump --host [su_host] -u [su_usuario] -p[su_contraseña] [nombre_base_datos] -r [ruta]

en donde:

  • [su_host]: Representa el host donde esta alojada tu base de datos, si tienes el servidor corriendo en tu propia PC puedes utilizar localhost como tal o de lo contrario la dirección o IP de tu host remoto, para ello utilizamos la opción –host.
  • [su_usuario]: Es el nombre del usuario de tu base de datos, por ejemplo muchos tenemos root para todo, en caso de que tengas otro aqui puedes ponderlo enseguida de la opcion -u.
  • [su_contraseña]: Utilizando la opción -p, definimos la contraseña del usuario de nuestra base de datos, esta opcion se utiliza sin dejar espacios entre -p y su contraseña, por ejemplo, -p1234.
  • [nombre_base_datos]: Si solo va a realizar el respaldo de una sola base de datos simplemente coloque el nombre la base de datos sin nada más, si va respaldar más de una debe utilizar la opción –databases.
  • [ruta]: -r es la opción result file (archivo resultante), aqui espeficamos el nombre que tendrá el archivo de salida, podemos ponerle un nombre como tal ( dumpfile.sql) o con el directorio completo donde queremos que se almacene ( C:\dumpfile.sql).

En mi caso tengo una base de datos llamada pruebas, y es la que pienso respaldar entonces mi comando queda de la siguiente manera:

mysqldump --host localhost -u root -p1234 pruebas -r backup.sql

Para ejecutar este comando desde código en Java vamos un método llamado respaldo() y su contenido va a ser el siguiente:

Este método nos crea un volcado completo de nuestra base de datos en el directorio backups y nos va a imprimir un mensaje en consola con los eventos del programa, esto para verificar si hay errores.

Si abrimos el archivo generado veremos que se incluye toda la estructura de nuestra base de datos incluyendo tablas y los registros.

 

Restauración de la base de datos

Ahora para restaurar partiendo del archivo de volcado vamos a utilizar el ejecutable mysql.exe en lugar del dumpmysql.exe y de igual forma mediante un comando vamos a restaurar toda nuestra base de datos.

Para ello creamos un método llamado restaurar() con el siguiente código:

Nuevamente este método imprimirá una salida con los eventos del comando.

Esta es una forma sencilla de respaldar bases de datos MySQL desde Java y también de restaurarlas, esto utilizando herramientas que el propio MySQL Server ya tiene integradas.

Descargas

Puedes bajarte el ejemplo completo hecho en NetBeans para que puedas estudiarte su funcionamiento e implementarlo en tus proyectos.

Descarga el código fuente del proyecto

 

Referencias, toda la documentación involucrada la puedes encontrar en las siguientes ligas:

¿Tienes problemas? Usa los comentarios o como todo buen programador puedes ir a Stack Overflow, publicar tu problema y esperar a recibir respuestas (casi siempre hay solución).