Archiv verlassen und diese Seite im Standarddesign anzeigen : Tägliches datenbank update über cron
Speedman-xxl
22.08.2004, 02:28
ich hätte gerne ein tägliches datenbank update über cron. wie muss dort das php script aussehen???? ich hatte da zwar was gefunden aber das hat immer das alte überschrieben und das muss ja nicht sein !!
Du meinst mit "Update" ein Datenbank-Backup, oder?
Vielleicht kann man die db_backup.php aus diesem Packet entsprechend als vB Cron umschreiben und verwenden:
http://www.vbulletin-germany.com/forum/showthread.php?t=1609
So müsste das gehen ...
Lege im rootverzweichnis deines Servers ein verzeichnis backup an und gib ihm die rechte 777
Dann lasse als Cronjob diesen Code laufen ...
mysqldump -hlocalhost -uUsername -pPasswort Datenbank | gzip > /backup/' .date(d) . '.' .date(m) . '.' .date(Y) . '_backup.sql.gz
Das erstellt dann immer das Backup mit dem Datum und somit wird nix überschrieben.
Hättest Du das heute ausgeführt, würde es so aussehen ...
22.08.2004_backup.sql.gz
bye
Smoker
Speedman-xxl
22.08.2004, 14:33
danke ! sieht gut aus :rolleyes:
Scheisse.
Habe ich eben mal getestet und das geht so nicht, das muss in eine PHP Datei rtein, die du aufrufst.
Erstelle eine backup.php und lade sie in das backup verzeichnis rein und lasse diese ausführen.
<?php
// Hier Deine Daten eintragen
$host= 'localhost';
$user= 'Username';
$pass= 'Passwort';
$db= 'Datenbank';
// Befehl ausführen und in Zipfile speichern
system(sprintf(
'mysqldump --opt -h %s -u %s -p%s %s | gzip > %s/backup/' .date(d) . '.' .date(m) . '.' .date(Y) . '_backup.sql.gz',
$host,
$user,
$pass,
$db,
getenv('DOCUMENT_ROOT')
));
?>
Speedman-xxl
22.08.2004, 15:13
erhalte eine fehlermeldung
Datenbank Update
Parse error: parse error, unexpected T_LNUMBER in c:\programme\easyphp1-7\www\forum\backup\dbbackup.php on line 5
Upzz hatte ( '; ) vergessen.
Ist geändert.
ACHTUNG ... wenn die seite fertig ist, ist nur eine leere weisse seite !!!
bye
Smoker
Speedman-xxl
22.08.2004, 15:32
kann ja vorkommen ;-)
jetzt gibt er auch keine fehlermeldung mehr !!
Datenbank Update
Erledigt
vBulletin v3.0.3, Copyright ©2000-2004, Jelsoft Enterprises Ltd.
nur ich kann das file nirgens finden :confused:
Müsste in deinem Ordner ( backup ) liegen.
Achso ... auch diese Datei in das Verzeichnis Backup rein.
So läuft es bei mir.
bye
Smoker
Speedman-xxl
22.08.2004, 15:48
ups wenn ich das php direckt ausführe bekomme ich doch noch fehlermeldung
Notice: Use of undefined constant d - assumed 'd' in c:\programme\easyphp1-7\www\forum\backup\dbbackup.php on line 9
Notice: Use of undefined constant m - assumed 'm' in c:\programme\easyphp1-7\www\forum\backup\dbbackup.php on line 9
Notice: Use of undefined constant Y - assumed 'Y' in c:\programme\easyphp1-7\www\forum\backup\dbbackup.php on line 9
Hmmm dann weis ich nicht, was an deinem Server warscheinlich falsch eingestellt ist, denn so wie es jetzt oben steht, läuft das bei mir seit Monaten.
bye
Smoker
Speedman-xxl
22.08.2004, 15:55
hmmmm komich siht so aus als wenn er mit dem datum nicht klar kommt ???
Müsste das nicht date("d") statt date(d) usw. heißen?
Speedman-xxl
22.08.2004, 19:18
werde ich gleich mal testen !!!
Speedman-xxl
22.08.2004, 19:23
du hattest recht keine felermeldung mehr aber das file finde ich leider immer noch nirgens auf dem rechner ??
Mit getenv('DOCUMENT_ROOT') landet das Ding ja immer im Root-Verzeichnis, auf das du evtl. überhaupt keinen Zugriff hast...gibt stattdessen mal einen absoluten Pfad zu einem Verzeichnis von dir an. Das Verzeichnis muss die Rechte 0777 (bei Linux) bzw. einfach Schreibrechte haben.
bei dir z.B. 'c:/programme/easyphp1-7/www/forum'
/backup/ wird dann automatisch angehängt.
Müsste das nicht date("d") statt date(d) usw. heißen?
Weis ich auch nicht, denn ich habe das so erstellt und bei mir getestet und es klappte, deswegen hatte ich mir das keine weiteren gedanken gemacht :(
bye
Smoker
Speedman-xxl
22.08.2004, 20:18
hmmm leider nein aber wie gebe ich den die rechte 0777 muss ich das in apache einstellen ??
hmmm leider nein aber wie gebe ich den die rechte 0777 muss ich das in apache einstellen ??Mit dem Befehl CHMOD...aber "'c:/programme/easyphp1-7/www/forum'" deutet offensichtlich auf Windows hin, d.h. du musst ganz normal im Explorer Schreibrechte auf dieses Verzeichnis vergeben (was es ohnehin schon haben dürfte).
Wie sieht deine Datei denn nun aus?
Speedman-xxl
23.08.2004, 01:59
so ist es wie gesagt das script macht keine fehlermeldung (die seite bleibt weiss nach dem ausführen)
habe einen direckten pfad angegeben un den gesamten bereich der für den webserver da ist durschsuchen lassen aber nix zu machen :confused:
Füge mal GENAU über dem
?>
in der Datei das ein ...
echo 'Backup fertig';
Dann steht nach erfolgreichem erstellen dieser text da, dann biste 100% sicher, das es das auf jedenfall ohne fehler ausgeführt hat.
Nicht das es bei Dir blos abbricht oder so.
bye
Smoker
Speedman-xxl
24.08.2004, 03:35
habe ich eingetragen
allerdings kommt die antwort backup fertig direckt danach also es dauert nitmal ne halbe sec.
und wenn ich im admincp das datenbank backup durchführe dan dauert das za 5-7 sec. hmmm also der kann unmöglich in der zeit ein backup gemacht haben und meine hd led blinkt auch nicht also keine aktivität
Dein Forum ist doch ziemlich klein und die Datenbank somit auch.
Haste auch Deine Daten in der backup Datei ei getragen ?????
Ich meine hier ...
$host= 'localhost';
$user= 'Username';
$pass= 'Passwort';
$db= 'Datenbank';
bye
Smoker
Speedman-xxl
24.08.2004, 13:01
habe ich gemacht habe die daten aus der config.php
$servername
$dbusername usw...
schau doch einfach nach ob das backup vorhanden ist
Speedman-xxl
24.08.2004, 14:06
das ist ja das prob da ist keins !!!!
gesammte platte durchsuchen lassen nix da!!
hatte ich aber ein paar beiträge vorher schonmal erwähnt
red_head
24.08.2004, 14:08
So habe ein wenig expermentiert und raus kam folgender Shell Befehl
mysqldump -h localhost -u username --password=xxx db_name | gzip > /verzeichnis/`date '+%F'`_backup.sql.gz
Ich hab ihn auf einem SuSE und einem Debian System ausprobiert und er funktioniert auf beiden einfwandfrei.
Gruß red_head
Und ich hab es gerade auf Red Hat Enterprise Linux ES r3 (TU 2) (http://www.redhat.com/software/rhel/es/) getestet.
Dort klappts auch super.
DB ist 17 MB und als 2004-08-24_backup.sql.gz nur noch 6,5 MB :D
On the Fly!! (Das was rot eingefärbt ist, anpassen...)
mysqldump --add-drop-table -h localhost -u BENUTZERNAME --password=PASSWORT DB-NAME | gzip > /home/`date '+%F'`_backup.sql.gz
Ohne Gzip, als reines sql (Auch hier das rot eingefärbt ist, anpassen...)
mysqldump --add-drop-table -h localhost -u BENUTZERNAME --password=PASSWORT DATENBANKNAME > /home/dump.sql
In Teamwork with red_head ;) (Bzw er hat meine Fehler korrigiert)
red_head
24.08.2004, 14:56
Zur Info:
--add-drop-table
bewirkt das das SQL geschrieben wird, wenn eine Tabelle existiert.
Das Sie vorher gelöscht wird und dann wieder angelegt und mit Daten gefüllt wird.
Also kann man diesen Parameter auch in den oberen Befehl einfügen.
Gruß red_head
Schon passiert! Richtig so?
Speedman-xxl
24.08.2004, 15:02
also ich binn da zu blööd für :(
wenn ich diesen code
<?php
// Hier Deine Daten eintragen
$host= 'localhost';
$user= 'meiner';
$pass= 'meins';
$db= 'meine';
// Befehl ausführen und in Zipfile speichern
system(sprintf(
// 'mysqldump --opt -h %s -u %s -p%s %s | gzip > %s/backup/' .date("d") . '.' .date("m") . '.' .date("Y") . '_backup.sql.gz',
mysqldump -h localhost -u meiner --password=meins meine | gzip > /backup/`date '+%F'`_backup.sql.gz
$host,
$user,
$pass,
$db,
getenv('c:/programme/easyphp1-7/www/forum')
));
echo 'Backup fertig';
?>
erhalte ich das :
Parse error: parse error, unexpected T_STRING in c:\programme\easyphp1-7\www\forum\backup\dbbackup.php on line 10
red_head
24.08.2004, 15:14
<?php
// Hier Deine Daten eintragen
$host= 'localhost';
$user= 'meiner';
$pass= 'meins';
$db= 'meine';
// Befehl ausführen und in Zipfile speichern
system("mysqldump -h $host -u $user --password=$pass $db | gzip > /backup/\`date \'+%F\'\`_backup.sql.gz");
echo 'Backup fertig';
?>
Veruch das mal ;)
Keine Garantie da ich das bloß grad runtergeschrieben hab ;)
Gruß red_head
Speedman-xxl
24.08.2004, 15:28
leider sagt er jetzt wieder backup fertig aber nix zu sehen von einem backup ich verstehe das alles net
red_head
24.08.2004, 18:53
<?php
// Hier Deine Daten eintragen
$host= 'localhost';
$user= 'xxx';
$pass= 'xxx';
$db= 'xxx';
$aktualDate = date("Y-m-d");
system("mysqldump -h $host -u $user --password=$pass $db | gzip > /root/".$aktualDate."_backup.sql.gz");
echo 'Backup fertig';
?>
So das sollte funktionieren ;) hat bei mir so geklappt ;)
Das Ganze kann unter deinem Windows-System überhaupt nicht funktionieren, da du 1. kein gzip Programm hast und 2. die mysqldump ohne Pfadangabe nicht gefunden werden kann. Des Weitere klappt wohl die Variablenübergabe via Pipe (|) in dem Skript nicht, selbst wenn du dir die gzip.exe heruntergeladen hast.
Also, verwende das, dann wird es halt nicht komprimiert:<?php
// Hier Deine Daten eintragen
$host= 'localhost';
$user= 'xxx';
$pass= 'xxx';
$db= 'xxx';
$actualDate = date("Y-m-d");
system("c:/programme/easyphp1-7/mysql/bin/mysqldump -h $host -u $user --password=$pass $db c:/programme/easyphp1-7/www/forum/backup/".$actualDate."_backup.sql");
echo 'Backup fertig';
?>
Speedman-xxl
24.08.2004, 20:00
ups den hatte ich garnicht gesehen wollte gerade resignieren aber den probiere ich noch aus ! :eek:
Speedman-xxl
24.08.2004, 20:10
jetrzt tut sich wenigstens etwas !! :eek:
aber es ist leider immer noch kein backup da aber er gibt folgende meldung:
-- MySQL dump 9.11 -- -- Host: localhost Database: mysql -- ------------------------------------------------------ -- Server version 4.0.20a-debug Backup fertig
und immer noch keine Datei gefunden? Denn es scheint alles gelappt zu haben? Bei mir funzt das auch....
Speedman-xxl
25.08.2004, 23:39
nee leider nicht :(
Da gibts doch nicht.. Aber erführt es ja aus... Erstell mal ein neues Verzeichnis, geb diesem die Rechte und versuche es nochmal. Aber aufjedenfall nen anderen Pfad. nicht den, den du schon hattest.. :rolleyes:
Speedman-xxl
26.08.2004, 02:03
habe den pfad geändert auf /forum/ das ist der selbe pfad als wenn ich aus dem admincp das backup mache aber biss auf diese meldung:
-- MySQL dump 9.11 -- -- Host: localhost Database: mysql -- ------------------------------------------------------ -- Server version 4.0.20a-debug Backup fertig
passirt nix ! wiso sagt es eigentlich "-debug " ??
Das debug "sagt" es nicht, deine MySQL-Version heist so. So wie du XXL hinten dran hast.. Das bedeutet, das du damit auch debugen kannst. Also wie das in anderen Programmen auch üblich ist, um Fehler zu finden usw..
Ich habe auch MySQL 4.0.20, allerdings so. MySQL 4.0.20-max
Speedman-xxl
26.08.2004, 02:11
bei der meldung die er bringt :
-- MySQL dump 9.11 -- -- Host: localhost Database: mysql -- ------------------------------------------------------ -- Server version 4.0.20a-debug Backup fertig
zeigt er auch nur den namen meiner datenbank! (mysql) aber sonst nichts ist das koreggi so ??
vBulletin® v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.