Windows 7-Aufgabenplan / mysqldump

Windows 7-Aufgabenplan / mysqldump

Ich habe eine Batchdatei erstellt, um einen Dump einer Datenbank zu erstellen und ihn in einer Datei mit dem aktuellen Datum als Teil des Dateinamens zu speichern. Die Batchdatei funktioniert hervorragend und alle Daten werden korrekt gespeichert.

Ich habe jetzt versucht, eine geplante Aufgabe einzurichten, die dies wöchentlich erledigt, aber ich bin auf ein Problem gestoßen: Obwohl die Aufgabe ausgeführt wird, ist die erstellte Datei leer, als ob sie keine Daten aus der Remote-Datenbank abgerufen hätte. Ich weiß, das ist ziemlich vage, aber kann mir jemand sagen, wo ich mit der Suche nach einem Grund/einer Lösung beginnen soll?

** BEARBEITEN **

Richtig, weiterer Fortschritt – sieht aus, als ob es ein Pfadproblem sein könnte. Ich habe eine Pause in die Batchdatei eingefügt, und wenn ich sie über den Taskplaner ausführe, heißt es: „mysqldump ist kein erkanntes Programm“. Wenn ich sie jedoch über die Befehlszeile auf meinem Benutzerkonto ausführe, funktioniert sie einwandfrei. Nur zur Bestätigung: Ich habe sie so eingestellt, dass sie auf demselben Benutzerkonto ausgeführt wird, auf dem ich sie getestet habe.

** BEARBEITEN 2 **

Ich habe eine Art Lösung gefunden: Ich musste die Anwendung mysqldump über ihren absoluten Pfad referenzieren. Ich kann jedoch immer noch nicht verstehen, warum sie mysqldump über den Pfad finden kann, wenn sie direkt von der Befehlszeile ausgeführt wird, aber nicht, wenn sie automatisch über den Taskplaner ausgeführt wird.

Antwort1

Vielleicht war das Netzwerk nicht verfügbar? Sie könnten versuchen, es so zu planen, dass es alle 5/10 Minuten ausgeführt wird, und prüfen, ob die Befehle/Variablen korrekt ausgeführt werden. Sind Sie sicher, dass das Skript korrekt ausgeführt wird, wenn es als Ganzes ausgeführt wird und nicht nur ein einzelner Befehl auf einmal?


Zu Ihrer Bearbeitung 2: Es scheint, als ob mysqldump in den PATHUmgebungsvariablen nicht vorhanden ist. Versuchen Sie, es hinzuzufügen, und versuchen Sie es erneut.

Antwort2

Haben Sie versucht, mysqldump (in Ihrer geplanten Aufgabe) im ausführlichen Modus auszuführen? (--verbose)

Sehen Sie sich außerdem an, als welcher Benutzer Ihre Aufgabe ausgeführt wird, und stellen Sie sicher, dass der Benutzer über die Berechtigung zum Ausführen von mysqldump verfügt und eine Datei im Zielverzeichnis erstellt.

Antwort3

  1. Wenn die Angabe des absoluten Pfads Ihr Problem gelöst hat, ist es nicht möglich, eine leere Datei zu erstellen. Stattdessen wird im Windows-Scheduler-Protokoll keine erstellte Datei mit der Meldung angezeigt, dass der Job erfolgreich war.

  2. Ihr Skript funktioniert möglicherweise in der Befehlszeile, wenn die Pfadvariable die Pfadinformationen zu mysqldump.exe enthält. Überprüfen Sie dies, indem Sie den Befehl „path“ in die Befehlszeile eingeben.

  3. Zu Ihrer Information finden Sie hier eine Beispiel-Batchdatei, die ich für die MySQL-Sicherung verwendet habe.

@echo aus
SETZEN SIE DB_USER_ID=[id]  
SET DB_USER_PASS=[Passwort]
SET DATABASE=[Datenbankname]
SET EXP_PATH=[Sicherungspfad]
SET EXP_TMP_PATH=[temp. Pfad]
SET FILE_NAME=[Sicherungsdateiname]
Für /f "Tokens=1-3, Trennzeichen=- " %%a in ('Datum /t') führen Sie Folgendes aus: (Heute festlegen=%%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
Verschieben Sie %EXP_TMP_PATH%\%FILE_NAME%_%today%.sql %EXP_PATH%\%FILE_NAME%_%today%.sql

verwandte Informationen