agenda de tarefas do windows 7 / mysqldump

0

Eu criei um arquivo em lotes para criar um despejo de um banco de dados e salvá-lo em um arquivo com a data atual como parte do nome do arquivo. O arquivo de lote funciona de forma brilhante e todos os dados são salvos corretamente.

Eu agora tentei configurar uma tarefa agendada para fazer isso semanalmente, mas me deparei com um problema: embora a tarefa seja executada, o arquivo que ela cria está vazio, como se não tivesse extraído nenhum dado do banco de dados remoto. Eu sei que é muito vago, mas alguém pode dizer onde eu começaria a procurar uma razão / solução?

** EDITAR **

Certo, mais progresso - parece que pode ser um problema de caminho Eu coloquei uma pausa no arquivo de lote e, quando executado através do agendador de tarefas, ele diz: 'mysqldump não é um programa reconhecido'. No entanto, quando executado através da linha de comando na minha conta de usuário, funciona bem; apenas para confirmar, eu o configurei na mesma conta de usuário em que o testei.

** EDIT 2 **

Eu encontrei um tipo de solução: Eu tive que referenciar o aplicativo mysqldump pelo seu caminho absoluto. No entanto, ainda não consigo entender por que ele pode encontrar mysqldump a partir do caminho quando executado diretamente a partir da linha de comando, mas não quando automatizado através do agendador de tarefas.

Richzilla
fonte

Respostas:

1

Talvez a rede não estivesse disponível? Você pode tentar agendá-lo para executar a cada 5/10 minutos e ver se os comandos / variáveis ​​estão corretos. Tem certeza de que o script é executado corretamente quando executado como um todo e não apenas um único comando por vez?


Em sua edição 2: Parece que o mysqldump não está presente nas PATHvariáveis ​​de ambiente. Tente adicionar isso e tente novamente.

Sathyajith Bhat
fonte
não é um problema de rede, eu posso executar todo o arquivo de lote a partir da linha de comando e funciona ok, e eu recebo o mesmo problema tentando fazer backup do meu servidor mysql local
richzilla
Sim, este é o problema, está no caminho. no caminho ive got c:\xampp\mysql\bin` where bin contains all of the mysql binaries. when running the batch file from the command line, i just need to refer to the application name - mysqldump . When running from the task scheduler, it refuses to work unless i provide the batch file with the full path to mysqldump.exe`
richzilla
0

Você já tentou executar o mysqldump (em sua tarefa agendada) no modo detalhado? (--verbose)

Além disso, talvez olhe para qual usuário sua tarefa está sendo executada, certifique-se de que o usuário tenha permissões para executar o mysqldump e criar um arquivo no diretório de destino.

Aerik
fonte
O usuário que a tarefa está executando é o mesmo que a pasta do usuário com a qual todos os arquivos estão envolvidos, portanto, ele não deve ser um problema de permissão.
richzilla 01 de
Eu tentei o sinalizador verboso, novamente ele funciona bem se eu executar arquivo em lote a partir da linha de comando, mas se eu executá-lo através do agendador de tarefas, um prompt de comando pisca e, em seguida, dissappears, eu nunca tenho a chance de ver o que diz.
richzilla
0
  1. Se o caminho absoluto resolver o seu problema, não será possível criar um arquivo vazio. Em vez disso, nenhum arquivo criado com o log do Windows Scheduler mostra o trabalho bem-sucedido.

  2. Seu script pode funcionar na linha de comando, se a variável path contiver as informações do caminho para mysqldump.exe. Verifique isso dando o comando "path" para a linha de comando.

  3. Para sua referência, aqui está o arquivo de lote de amostra que usei para o backup do mysql.

@echo off
SET DB_USER_ID = [id]  
SET DB_USER_PASS = [senha]
SET DATABASE = [nome do banco de dados]
SET EXP_PATH = [caminho de backup]
SET EXP_TMP_PATH = [caminho temp]
SET FILE_NAME = [nome do arquivo de backup]
For / f "tokens = 1-3 delims = -" %% a in ('date / t') do (definir hoje = %% a - %% b - %% c)

del / S / Q% EXP_PATH%
md% EXP_PATH%
md% EXP_TMP_PATH%

C: \ Bitnami \ redmine-2.5.2-0 \ mysql \ bin \ mysqldump.exe -u% DB_USER_ID% -p% DB_USER_PASS%% DATABASE%>% EXP_TMP_PATH% \% FILE_NAME% _% today% .sql
mover% EXP_TMP_PATH% \% FILE_NAME% _% hoje% .sql% EXP_PATH% \% FILE_NAME% _% today% .sql
Heungwoo
fonte