16. Respaldo y Restauración de Base de datos en Java
Respaldo de Base de Datos
Una copia de seguridad, copia de respaldo, copia de reserva o también llamado backup (su nombre en inglés) es una copia de los datos originales fuera de la infraestructura que se realiza con el fin de disponer de un medio para recuperarlos en caso de su pérdida.
En mysql un respaldo se realiza con la utilidad mysqldump desde nuestra consola o mediante comandos shell, la sintaxis es la siguiente:
|
1 |
mysqldump -u "usuario" -p"contraseña" nombre-de-la-base-de-datos > ubicacion-y-nombre-del-respaldo.sql |
Restauración de Base de Datos
Una restauración de base de datos (en inglés restore) es la carga de una copia de seguridad al sistema, ya sea por perdida de información, eliminación accidentar u otras cusas.
Para restaurar un respaldo de una base de datos MySQL usamos el siguiente comando:
|
1 |
mysql -u "usuario" -p"contraseña" nombre-de-la-base-de-datos < ubicacion-y-nombre-del-respaldo.sql |
NOTA: En ambos casos las comillas deben omitirse tanto en el usuario como en la contraseña.
Respaldar Base de datos de MySQL en Java
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Process p = Runtime.getRuntime().exec("mysqldump -u prueba -p1234 tienda"); InputStream is = p.getInputStream();//Pedimos la entrada FileOutputStream fos = new FileOutputStream("backup_tienda.sql"); //creamos el archivo para le respaldo byte[] buffer = new byte[1000]; //Creamos una variable de tipo byte para el buffer int leido = is.read(buffer); //Devuelve el número de bytes leídos o -1 si se alcanzó el final del stream. while (leido > 0) { fos.write(buffer, 0, leido);//Buffer de caracteres, Desplazamiento de partida para empezar a escribir caracteres, Número de caracteres para escribir leido = is.read(buffer); } fos.close();//Cierra respaldo |
Restaurar Base de datos de MySQL en Java
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Process p = Runtime.getRuntime().exec("mysql -u prueba -p1234 database"); OutputStream os = p.getOutputStream(); //Pedimos la salida FileInputStream fis = new FileInputStream("backup_pruebas.sql"); //creamos el archivo para le respaldo byte[] buffer = new byte[1000]; //Creamos una variable de tipo byte para el buffer int leido = fis.read(buffer);//Devuelve el número de bytes leídos o -1 si se alcanzó el final del stream. while (leido > 0) { os.write(buffer, 0, leido); //Buffer de caracteres, Desplazamiento de partida para empezar a escribir caracteres, Número de caracteres para escribir leido = fis.read(buffer); } os.flush(); //vacía los buffers de salida os.close(); //Cierra fis.close(); //Cierra respaldo |
Proceso para mostrar en pantalla los errores que envía MySQL
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
public class HiloLector extends Thread { private final InputStream is; public HiloLector(InputStream is) { this.is = is; } @Override public void run() { try { byte[] buffer = new byte[1000]; int leido = is.read(buffer); while (leido > 0) { String texto = new String(buffer, 0, leido); System.out.print(texto); leido = is.read(buffer); } } catch (Exception e) { System.err.println(e.toString()); } } } |
En el respaldo y restauración, sólo tenemos que poner esta línea después de las llamadas a Runtime.getRuntime().exec(«…»):
|
1 |
new HiloLector(p.getErrorStream()).start(); |