agendamento de tarefas do Windows 7 / mysqldump

agendamento de tarefas do Windows 7 / mysqldump

Criei um arquivo em lote para criar um dump de um banco de dados e salvá-lo em um arquivo com a data atual como parte do nome do arquivo. O arquivo em lote funciona perfeitamente e todos os dados são salvos corretamente.

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 um motivo/solução?

**EDITAR**

Certo, mais progresso - parece que pode ser um problema de caminho. Coloquei uma pausa no arquivo em lote e, quando executado no agendador de tarefas, 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, configurei-o para ser executado na mesma conta de usuário em que o testei.

** EDITAR 2 **

Encontrei uma espécie de solução: tive que referir o aplicativo mysqldump pelo seu caminho absoluto. No entanto, ainda não consigo entender por que ele pode encontrar o mysqldump no caminho quando executado diretamente na linha de comando, mas não quando automatizado por meio do agendador de tarefas.

Responder1

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


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

Responder2

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

Além disso, talvez veja em 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.

Responder3

  1. Se fornecer o caminho absoluto resolveu o seu problema, não é possível criar um arquivo vazio. Em vez disso, nenhum arquivo criado com o log do agendador do Windows mostra que o trabalho foi 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 dando o comando "path" para a linha de comando.

  3. Para sua referência, aqui está um exemplo de arquivo em lote que usei para backup do MySQL.

@eco desligado
DEFINIR 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 temporário]
SET FILE_NAME=[nome do arquivo de backup]
For /f "tokens=1-3 delims=- " %%a in ('data /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
mova %EXP_TMP_PATH%\%FILE_NAME%_%hoje%.sql %EXP_PATH%\%FILE_NAME%_%hoje%.sql

informação relacionada