[MySQL] MySqlDump vanuit scheduled job werkt niet

Pagina: 1
Acties:

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Topicstarter
Ik ben er niet zeker van of dit topic hier thuis hoort maar S&S leek me de beste keuze:

De situatie: Ik heb hier een Windows 2003 machine staan. Met de Windows Task Scheduler heb ik een job ingesteld die elke keer bij het booten (wat ik dagelijks doe) een batch file start met daarin de opdracht MySqlDump om een backup van m'n MySQL 4 database te maken. De batchfile draait onder een account wat in de Administrators groep staat.

Het probleem: De batch file wordt gestart maar er wordt een leeg .sql bestand aangemaakt en MySqlDump geeft een errorlevel 1 terug aan de batch. Ofwel: Er gaat iets fout.
Als ik de batchfile draai terwijl ik ingelogd ben, bijvoorbeeld door in Scheduled Tasks voor Run te kiezen, dan draait de opdracht wel goed en krijgt de .sql file een normale omvang.

Iemand enig idee wat er loos is? Ik dacht zelf aan een afhankelijkheid van de MySQL service en heb de batch file aangepast zodat ie wacht tot de service gestart is maar dat heeft geen effect gehad. Ik neem ook aan dat de Scheduled Tasks pas worden afgetrapt als alle services draaien.
In de MySQL log vind ik alleen de normale meldingen over afsluiten en opstarten van MySQL rond een reboot. Geen foutmeldingen.

Hier de (iets ingekorte) batchfile maar ik geloof niet dat daar fouten in zitten:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@echo off

rem Wacht tot MySQL service gestart is.

:wait
net start | find /i "MySQL 4" > nul:
if errorlevel==1 goto wait

rem Hier stond wat niet-relevante code om datum/tijd te bepalen.

rem Stel wat variabelen in.

set destination=d:\backup
set mysql=C:\Program Files\MySQL\MySQL Server 4.1\bin
set user=user
set password=wachtwoord
set datetime=%yy%-%mm%-%dd% %weekday%
set filename=mysql %computername% (%datetime%).sql
set log=mysql %computername%.log

rem Maak de backup.

"%mysql%\mysqldump.exe" --all-databases --complete-insert --user=%user% --password=%password% --result-file="%destination%\%filename%" >> "%destination%\%log%"

rem En maak een log file aan.

if errorlevel==0 echo %datetime%: MySQL backup succesvol. >> "%destination%\%log%"
if errorlevel==1 echo %datetime%: MySQL backup mislukt. >> "%destination%\%log%"

  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Die D: schijf, is dat een netwerk gemapte drive? :)

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Topicstarter
elevator schreef op dinsdag 13 juni 2006 @ 22:40:
Die D: schijf, is dat een netwerk gemapte drive? :)
Nope. Er gebeurt niks via het netwerk. De D: schijf is lokaal. De MySQL service draait ook lokaal. MySqlDump maakt bovendien wel een .sql file van 0KB aan dus er gebeurt wel iets.

[ Voor 14% gewijzigd door downtime op 13-06-2006 23:19 ]


  • BCC
  • Registratie: Juli 2000
  • Laatst online: 17:23

BCC

Wat zegt de scheduled tasks log? En je eigen log?

[ Voor 21% gewijzigd door BCC op 13-06-2006 23:22 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Topicstarter
Het Scheduler log meldt niks bijzonders:

"Task Scheduler Service"
	Started at 13-6-2006 12:33:03
"Task Scheduler Service"
5.2.3790.1830 (srv03_sp1_rtm.050324-1447)
"mysql-backup.job" (mysql-backup.cmd)
	Started 13-6-2006 12:33:14
"mysql-backup.job" (mysql-backup.cmd)
	Finished 13-6-2006 12:33:18
	Result: The task completed with an exit code of (0).


Volgens het log draaide de batch file zonder problemen. Dat klopt ook. De batch file draait ook wel en MySqlDump wordt afgetrapt maar die maakt gewoon een lege backup file aan. Het probleem lijkt mij echt in MySQL zelf te zitten.

  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Wat staat er in die logfile waar je de output van mysql naar dumpt ? :)

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Topicstarter
elevator schreef op dinsdag 13 juni 2006 @ 23:49:
Wat staat er in die logfile waar je de output van mysql naar dumpt ? :)
Niks. MySqlDump geeft dus alleen een errorlevel 1 terug maar geen foutmeldingen.

Ik heb net wat zaken getest en misschien heb ik de oorzaak gevonden: Mijn batch file wachtte totdat de MySQL service gestart is en loopt dan verder. Ik vermoed dat er een moment is wanneer de MySQL service wel gestart is maar nog niet gereed om query's te verwerken.

Ik heb de batch file nu aangepast zodat ie na het starten van de MySQL service nog 10 seconden wacht voordat ie MySqlDump start. Nu maar afwachten of dat de oplossing is :)

Verwijderd

er mist wel een zou code in je batch file :)

maar idd niet relevant, als je het dumpcommando handmatig uitvoert, zie je dan iets gebeuren?

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Topicstarter
/downtime/ schreef op woensdag 14 juni 2006 @ 01:09:
Ik heb de batch file nu aangepast zodat ie na het starten van de MySQL service nog 10 seconden wacht voordat ie MySqlDump start. Nu maar afwachten of dat de oplossing is :)
Eén zwaluw maakt nog geen zomer maar de batch job heeft vandaag wel goed gedraaid. Misschien is die vertraging van 10 seconden die ik heb ingebouwd toch de oplossing.

Ik zie het een paar dagen aan :)
Pagina: 1