¿Qué es un backup?
Una copia de seguridad o backup (su nombre en Inglés) en tecnología de la información o informática es una copia de seguridad - o el proceso de copia de seguridad - con el fin de que estas copias adicionales puedan utilizarse para restaurar el original después de una eventual pérdida de datos. [Wikipedia]
El siguiente codigo, BackUpSample.java, realiza una instruccion en mysqldump para crear el backup en memoria, despues este es guardado en un archivo SQL especificando su direccion y extension.
import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.FileWriter; import java.io.PrintWriter; /** * @web http://jc-mouse.blogspot.com/ * @author Mouse */ public class BackUpSample { private int BUFFER = 10485760; //para guardar en memmoria private StringBuffer temp = null; //para guardar el archivo SQL private FileWriter fichero = null; private PrintWriter pw = null; public boolean CrearBackup(String host, String port, String user, String password, String db, String file_backup){ boolean ok=false; try{ //sentencia para crear el BackUp Process run = Runtime.getRuntime().exec( "mysqldump --host=" + host + " --port=" + port + " --user=" + user + " --password=" + password + " --compact --complete-insert --extended-insert --skip-quote-names" + " --skip-comments --skip-triggers " + db); //se guarda en memoria el backup InputStream in = run.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(in)); temp = new StringBuffer(); int count; char[] cbuf = new char[BUFFER]; while ((count = br.read(cbuf, 0, BUFFER)) != -1) temp.append(cbuf, 0, count); br.close(); in.close(); /* se crea y escribe el archivo SQL */ fichero = new FileWriter(file_backup); pw = new PrintWriter(fichero); pw.println(temp.toString()); ok=true; } catch (Exception ex){ ex.printStackTrace(); } finally { try { if (null != fichero) fichero.close(); } catch (Exception e2) { e2.printStackTrace(); } } return ok; } }
Y la forma de utilizarlo:
donde:
HOST : localhost
PUERTO: 3306
USUARIO: el usuario de mysql
PASSWORD: el paasword de mysql
BASE DE DATOS: el nombre de la base de datos del cual se quiere realizar el backup
DIRECCION DEL ARCHIVO: la direccion donde se guardara el backup. Ej. "e:/copia de seguridad/backup.sql"
y tenemos:
public class Main { public static void main(String[] args) { new BackUpSample().CrearBackup("HOST", "PUERTO", "USUARIO", "PASSWORD", "BASE DE DATOS","DIRECCION DEL ARCHIVO"); } }
donde:
HOST : localhost
PUERTO: 3306
USUARIO: el usuario de mysql
PASSWORD: el paasword de mysql
BASE DE DATOS: el nombre de la base de datos del cual se quiere realizar el backup
DIRECCION DEL ARCHIVO: la direccion donde se guardara el backup. Ej. "e:/copia de seguridad/backup.sql"
y tenemos:
Saludos... y muy buen aporte, cuando ejecute el codigo del backup, me salia:
ResponderEliminarjava.IOException: cannot run program "mysqldump": CreateProcess error=2, el sistema no puede hallar el archivo especificado...
lo probe en S.O. vista 64bits y en S.O. XP 32bits, no se a q se debe este problema, y como podria solucionarlo...
Gracias de antemano...
¿creaste la base de datos? :)
ResponderEliminarsi es asi, entonces cheka la configuracion de mysqldump, por que no lo encuentra, prueba por linea de comandos si mysqldump esta bien configurado
pues si cree la base de datos, todo practicamente... pero me sale ese error... habia probado anteriormente un backup en unos de mis programas, y siempre me salio ese mensajito, quizas sea por la ubicacion del mysqldump???, entonces tendria q especificarlo???, y como haria eso???, bueno muchas gracias
ResponderEliminarHola MikeNF yo tambien nmire este codigo y me salia el mismo error suyo pero no hay de que preocuparse solo cambie un poco el codigo de mysql dump por la ruta de donde esta por ejemplo yo uso wamp server y el mysqldump esta en
ResponderEliminarC:\wamp\mysql\bin\mysqldump.exe....
asi el codigo le funciona si no usa wamp ps con el buscador de su pc busque ese archivo mysqldump.exe y copie la ruta y la reemplaza en el codigo asi:
yo lo hago con la ruta que tengo ud con la ruta que tenga...
Process run = Runtime.getRuntime().exec(
"C:\\wamp\\mysql\\bin\\mysqldump --host=" + host + " --port=" + port +
" --user=" + user + " --password=" + password +
" --compact --complete-insert --extended-insert --skip-quote-names" +
" --skip-comments --skip-triggers " + db);
listo espero le sirva nos vemos recuerde que si es \ tiene que ponerlo \\ o le sale error...
hola, y si kisiera utilizar este codigo para crear un respaldo pero de mis documentos k es lo k tendria que modificar??? o solo funiciona para crear respaldos de mysql??
ResponderEliminargracias por la ayuda pero tengo una duda como restaurar la base de datos a partir del backup.sql en netbeans seria de gran ayuda
ResponderEliminarEl cod anda bárbaro.. pero a la hora de restaurar la base de datos estoy teniendo problemas, uso lo sig:
ResponderEliminarProcess run =Runtime.getRuntime().exec(
"C:\\...bla bla bla...\\mysql.exe --password=" " --user="root" db < archivo.sql);
si lo hago con el administrador de mysql en localhost, anda bien.. pero desde el sistema hecho con java, no me deja.
Alguna recomendación??
gracias!
wow si muchas gracias por el codigo, pero igual que el comentario anterior, no puedo restaurar la base de datos, ni con una instruccion sql enviada desde java.... AYUDA POR FAVOR!! es para un proyecto y lo necesito....
ResponderEliminaral restaurar el problema es que no se puede encontrar la ruta de mysql, si colocas la ruta absoluta no hay ningun problema
ResponderEliminarYO QUISIERA SABER SI ALGUIEN TIENE N CODIGO PARECIDO PERO PARA ORACLE
ResponderEliminarjc mouse lml
ResponderEliminarfunciona yeah!!
T_______T *
Y si solo quiero sacar el backup de algunas tablas y procedimientos espceificos?.
ResponderEliminarBuenas Tardes Mouse... te felicito por tus aportes que nos ayudan bastante... quisiera saber si podrías poner un tutotial como este pero ahora para restaurar una base de datos. Gracias de antemano.
ResponderEliminarMi nombre es eduardo
ResponderEliminar, estoy aciendo el crear backup pero me dice este error
java.io.FileNotFoundException: C:\Users\ejnsilva\Documents (Acceso denegado)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.(FileOutputStream.java:194)
at java.io.FileOutputStream.(FileOutputStream.java:84)
at java.io.FileWriter.(FileWriter.java:46)
at Formularios.BackUpSample.CrearBackup(BackUpSample.java:42)
at Formularios.Main.main(Main.java:21)
no lo entiendo
excelente me funciono muy bien...gracias
ResponderEliminarExcelente blog!
ResponderEliminarMuy bueno.... fue ctrl+c y ctrl+v y listo! jaja gracias por el aporte...
ResponderEliminarBuenas, me gustaria saber como realizar un backup cuando el servidor MySQL esta ubicado en otra direccion?
ResponderEliminarTengo 2 PCs un cliente y un server, como puedo hacer entonces??
necesito ayuda para poder restaurar la base de datos
ResponderEliminarhola...ahora podrias ayudarnos a ejecutar ese backup que se hizo desde java...porfis
ResponderEliminarHOLA .MUY INTERESANTE,,,PERO SABES TRATE DE MODIFICARLO Y APLICARLO PARA SQL Server ,PERO NADA......PODRIAS AYUDARME
ResponderEliminarGracias, me ha servido.
ResponderEliminarMouse muchas gracias por el aporte me ayudo bastante lo hice en una maquina de 32 bit y funciono muy bien al migrarla a una de 64 bits me dio problemas pero con la aclaracion de Kid_Goth ya lo resolvi mil gracias a los dos
ResponderEliminarHola hermano gracias por el aporte, mira estoy tratando de hacer un backup con la ayuda de tu codigo en una aplicacion hecha en java y netbeans con linux ubuntu y bd en phpmyadmin, pero no he podido crear el backup todavia, si pudieras ayudarme te lo agradeceria.
ResponderEliminarse olvido comentar que el backup lo quiero generar desde un boton !
ResponderEliminarBuenas amigo .. me podría decir si tiene algunos ejemplos iguales pero con. Base de datos firebird ..
ResponderEliminarComo seria un backup en java con un form, y solo con un click generar el backup de mi base de datos SQLserver... please
ResponderEliminar