Analisando código de Backup dos bancos de dados

5 respostas
java
Marcio_Tostes

Galera, achei um código que foi utilizado para realizar backup dos bancos de dados existentes do mySql.

package bkp;

import java.util.*;
import java.io.File;

public class MySQLBackup {

  // Constantes da classe
  private static String VERSION = "4.0.3";
  
  private static String SEPARATOR = File.separator;
  
  private static String MYSQL_PATH ="C:" + SEPARATOR +
                                    "Arquivos de programas" + SEPARATOR +
                                    "MySQL" + SEPARATOR +
                                    "MySQL Server 5.7" + SEPARATOR +
                                    "bin" + SEPARATOR;

  private static String PRESENTATION =
    "==========================================================\n" +

    "  Backup do banco de dados MySQL - Versao " + VERSION + "\n" +

    "  Autor: Marcelo Carvalho Pinto da Cunha\n\n" +

    "  Desenvolvido em 07/09/2009\n\n" +

    "  MarcWare Software, 2009-2012\n" +

    "==========================================================\n\n";
  
  // Lista dos bancos de dados a serem "backupeados"; se desejar adicionar mais,

  // basta colocar o nome separado por espaços dos outros nomes

  private static String DATABASES = "db_cesmg";
  
  private List<String> dbList = new ArrayList<>();

  public MySQLBackup() {

    String command = MYSQL_PATH + "mysqldump.exe";
    String[] databases = DATABASES.split(" ");

    for (int i = 0; i < databases.length; i++)
      dbList.add(databases[i]);

    // Mostra apresentação
    System.out.println(PRESENTATION);
    System.out.println("Iniciando backups...\n\n");

    // Contador
    int i = 1;

    // Tempo
    long time1, time2, time;

    // Início
    time1 = System.currentTimeMillis();

    for (String dbName : dbList) {

      ProcessBuilder pb = new ProcessBuilder(

        command,

        "--user=root",

        "--password=root",

        dbName,
        "--result-file=" + "." + SEPARATOR + "Backup" + SEPARATOR + dbName + ".sql");

      try {

        System.out.println("Backup do banco de dados (" + i + "): " + dbName + " ...");

        pb.start();
      }
      catch (Exception e) {
        e.printStackTrace();
      }
      i++;
    }

    // Fim
    time2 = System.currentTimeMillis();

    // Tempo total da operação
    time = time2 - time1;

    // Avisa do sucesso
    System.out.println("\nBackups realizados com sucesso.\n\n");

    System.out.println("Tempo total de processamento: " + time + " ms\n");

    System.out.println("Finalizando...");

    try {

      // Paralisa por 2 segundos
      Thread.sleep(2000);
    }
    catch (Exception e) {}

    // Termina o aplicativo
    //System.exit(0);

  }

 

  public static void main(String[] args) {

    MySQLBackup app = new MySQLBackup();
    
  } 

}

Executei o código com o nome de um banco que preciso automatizar o backup e não consigo encontrar o arquivo gerado que seria db_cesmg.sql, o que pode estar errado nesse código? alguém pode testar por favor?

5 Respostas

Rodrigo_Void

Está executando em linux ou windows?
Já verificou se não está dando erro?

Essa parte do seu comando não condiz com oq vc espera.
Esse SEPARATOR é inútil, pode sempre utilizar /

Marcio_Tostes

Eu testei no windows, o compilador não gera nenhum erro de execução.

Rodrigo_Void

É um comando externo que vc está rodando, pra ver se deu erro vc precisa fazer a leitura do retorno.

Marcio_Tostes

Desculpe a dúvida, mas como vou fazer isso?

Rodrigo_Void
Criado 3 de junho de 2018
Ultima resposta 4 de jun. de 2018
Respostas 5
Participantes 2