Realizar backup de mysql desde java.

Cuando realizamos programas que utilizan bases de datos, sea hace necesario, en ocasiones, brindar al usario la posibilidad de relizar una copia de seguridad (backup) de sus datos. A continación presento un codigo que realiza el backup de una base de datos creada en mysql a traves de java.

</code>

import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;

public class MysqlExporter {

public void exportDB() {
 int BUFFER = 10485760;
 //ruta archivo donde se guardara el backup
 String path = "E://myBackup.sql";
 //nombre de usuario de la base de datos
 String mysqluser = "user";
 //password del usuario
 String mysqlpassword = "password";
 //nombre de la base de datos
 String mysqldb = "base_name";
 String dumpCommand = "C://xampp//mysql//bin//mysqldump -u"+mysqluser+" -p"+mysqlpassword+" --skip-comments --skip-triggers "+mysqldb;
 //System.out.println(dumpCommand);
 File tst = new File(path);
 FileWriter fw = null;
 try {
 fw = new FileWriter(tst);
 fw.close();
 } catch (IOException ex) {
 ex.printStackTrace();
 }
 Runtime rt = Runtime.getRuntime();
 try {
 Process proc = rt.exec(dumpCommand);
 InputStream in = proc.getInputStream();
 InputStreamReader read = new InputStreamReader(in, "latin1");
 BufferedReader br = new BufferedReader(read);
 BufferedWriter bw = new BufferedWriter(new FileWriter(tst, true));
 String line = null;
 StringBuffer buffer = new StringBuffer();

int count;
 char[] cbuf = new char[BUFFER];
 while ((count = br.read(cbuf, 0, BUFFER)) != -1) {
 buffer.append(cbuf, 0, count);
 }
 String toWrite = buffer.toString();
 bw.write(toWrite);
 bw.close();
 br.close();
 } catch (IOException e) {
 e.printStackTrace();
 }

}

public static void main(String args[]) {
 MysqlExporter exporter = new MysqlExporter();
 exporter.exportDB();
 }
 }

En el codigo anterior, la variable path de tipo String es la ruta del archivo donde se guardara el backup.

Debemos asignar a las variables mysqluser, mysqlpassword, mysqldb los valores correspondientes para establecer la conexión con el motor.
La variable dumpCommand contiene el comando que ejecutara el backup, como se observa en el codigo, el valor de esta variable empieza por “C://xampp//mysql//bin//mysqldump“, que en mi caso es donde tengo instalado el motor. Esto debe ser remplazado por la ruta en donde tu tengas instalado el motor, que por lo general se encuentra en directorio_instalacion_mysql/bin/mysqldump.

Quiero aclarar que el codigo presentado no es de mi autoria, y que lo encontre en una pagina en ingles, le hice algunas modificaciones y hasta el momento me ha funcionado correctamente. Espero y le sea de gran utilidad a alguien.

Hasta otra,

Ralf.

3 comentarios en “Realizar backup de mysql desde java.

  1. hola amigo.. sabes me llama la atencion tu ejemplo para realizar backup esactamente eso ando buscando… sabes probe tu codigo pero ps en efecto como tu lo mencionas.. marca errores y queria sabersi podrias enviarme ese ejemplo ami correo.. asi ya sin errores.. lo que pasa es que necesito hacerlo paun proyecto de la escuela…

    espero que si puedas ayudarme.. estare etermanemte agradecido…

    mi mail es malku_mario@hotmail.com
    sale espero tu respuesta

  2. Acabo de corregir este código, si alguien lo desea utilizar, lo puede hacer.

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;

    public class export{

    public static void export(){

    int BUFFER = 10485760;

    String path=”bin/ruta_backup.sql”;
    String dumpCommand = “mysqldump –host=192.168.0.20 -u”+”usuarioMysql”+” -p”+”contraseña”+” “+” data_base”;
    FileWriter fw = null;
    String tst = path;
    try{
    fw = new FileWriter(tst);
    fw.close();
    }catch(IOException ex){
    ex.printStackTrace();}

    Runtime rt = Runtime.getRuntime();
    try{
    Process proc = rt.exec(dumpCommand);
    InputStream in = proc.getInputStream();
    InputStreamReader read = new InputStreamReader(in,”latin1″);

    BufferedReader br = new BufferedReader(read);br = new BufferedReader(read);
    BufferedWriter bw = new BufferedWriter(new FileWriter(tst,true));
    StringBuffer buffer = new StringBuffer();
    int count;
    char[] cbuf = new char[BUFFER];
    while ((count = br.read(cbuf, 0, BUFFER)) != -1)
    buffer.append(cbuf, 0, count);
    String toWrite = buffer.toString();
    bw.write(toWrite);
    bw.close();
    }catch (IOException e){
    e.printStackTrace();
    }
    }

    public static void main(String []args){
    try
    {
    export asdasd=new export();
    export.export();

    // String linea = “mkdir /home/usuario/MI CAPERTETA DESDE JAVA”;
    // String linea = “mysqldump -u root -p1 –all-databases > /home/usuario/Escritorio/fichero.sql”;
    // String[] linea = {“sh”,”-c”,”mkdir /home/usuario/Escritorio/hola”};
    // String[] linea = {“mysqldump.exe -u root -p200299 –all-databases > fichero.sql”};
    // Process procesos = Runtime.getRuntime().exec( linea );

    }
    catch( Exception e)
    {
    e.printStackTrace();
    }
    }

    }

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s