Fazer backup mysql em tempo de execução

8 respostas
gqferreira

Olá pessoal!

Estou tentando fazer backup do banco de dados mysql em tempo de execução e não estou conseguindo, veja o que tentei:
package folder;

public class Backup {
	          public static void main(String[] args) {
	        	  try {
					Runtime.getRuntime().exec("mysqldump -u root -p 123 Teste > /home/gustavo/Desktop/BACKUP/Backup000000.sql");
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
}
Tudo que encontro pela net é parecido. Quando eu usava o Rwindow$ isso funcionava ("mysqldump -u root -p 123 Teste > /home/gustavo/Desktop/BACKUP/Backup000000.sql") mas parece que no mysql para Linux o mysqldump não existe?!

O que faço?

Obrigado a todos!

8 Respostas

andre_udi

Olá,

lembre-se que o man é seu amigo:

o problema tá na forma como vc ta passando o passwd.
Agora, pra que usar java pra rodar um comando?

[]'s

gqferreira

Porque a minha aplicação vai fazer isso e muito mais. Isso é só um trecho … um teste…

gqferreira
Assim?:
package folder;

public class Backup {
	          public static void main(String[] args) {
	        	  try {
	        		
					Runtime.getRuntime().exec("mysqldump -u root --p=123 Teste > /home/gustavo/Backup000000.sql");
				
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
}
Não funcionou....
andre_udi

Olá.

mão pode ter espaço entre o -p e o password.
Ex:

[]'s

gqferreira

Deixei sem espaço e deu na mesma? Em que distribuição você testou? Tem certeza que o mysqldump tem no Linux?

andre_udi

olá,

depende da distribuição, se ela vem ou não instalado.
Vê na máquina que vc ta usando se tem ou não o comando, e se tá no path.
Se não tiver é só instalar.

[]'s

gqferreira
Encotrei um script na net e funcionou:
#!/bin/bash
  # Exporta dados de uma base mysql para um txt
  # By Marcelo Garcia 06/11/2004
  
  if [ $# -lt "1" ] ; then                 # Teste se tem ao menos 1  parametro - database
   echo -e "\nSyntaxe : ./mybackup.sh database [user] [password] [host] \n"
   exit 1                                 # exibo sintaxe e saio com codigo de erro
  fi
  
  # Atribuo parametros para variaveis
  database=$1
  user=$2
  passwd=$3
  host=$4
  backup_file=$5".sql"
  
  # Verifico as variaveis (parametros) opcionais e atribuo o default caso vazio
  let ${passwd:="backup"}
  let ${user:="backup"}
  let ${host:="localhost"}
    
  #Exceta a exportacao de dados
  mysqldump --host=$host --user=$user --password=$passwd --databases $database > $backup_file
Também tentei isso e funcionou:
mysqldump --host=localhost --user=root --password=123 --databases Teste > Backup.sql
Mas fazendo isso não dá certo:
Runtime.getRuntime().exec("mysqldump --host=localhost --user=root --password=123 --databases Teste > /home/gustavo/Desktop/BACKUP/Backup.sql");
Como faço para colocar o script na minha aplicação e chama-lo?
andre_udi

olá,

basta que o seu script tenha permissão de execução, e chamá-lo como se chama qualquer programa.

[]'s

Criado 17 de setembro de 2009
Ultima resposta 17 de set. de 2009
Respostas 8
Participantes 2