| Author |
Message |
Jens_K
Moderator

Age: 37
Joined: 04 Sep 2007
Posts: 1710
Location: Nähe Bielefeld

|
Posted:
2009-08-21, 13:26 SQL Statements vor und nach Backup |
  |
Hier kurz mein Problem:
Mein Hoster erlaubt leider nur eine max. Ausführungszeit von 9 Sekunden für Perl Scripte :-(
Jetzt würde ich mein (recht kleines, unbedeutendes) Forum trotzdem gerne per Cronjob sichern lassen und habe mir was ganz Feines ausgedacht.
Die beiden größten Tabellen sind die phpbb_search_wordlist und phpbb_search_wordmatch. Die brauche ich aber eigentlich gar nicht, da ich den Such-Index im Fall der Fälle auch aus den bestehenden Einträgen wieder neu aufbauen kann.
Ich sage der Konfiguration also, bitte sichere nur Tabellen mit einem Präfix 'phpbb_'. Vor der Sicherung wird die phpbb_search_wordmatch in search_wordmacht umbenannt, nach der Sicherung wieder retour. Das selbe Spiel mit der phpbb_search_wordlist. Dann braucht das Perl Script nur noch 4 Sekunden und ich bin glücklich.
Aber!
Der Dumper scheint sich als Allererstes zu ermitteln, welche Tabellen er denn bitteschön so alles sichern soll. Benenne ich per
ALTER TABLE phpbb_search_wordmatch RENAME AS search_wordmatch
die Tabelle um, findet er sie bei der Sicherung nicht mehr und steigt aus.
Quote: Schwerwiegender Fehler: die CREATE-Anweisung der Tabelle 'phpbb_search_wordlist' in der Datenbank 'd00a9765' konnte nicht gelesen werden!
Überprüfe die Tabelle auf Fehler.: Table 'd00a9765.phpbb_search_wordlist' doesn't exist
Das ist mein erstes Problem.
Mein zweites Problem ist, dass ich es irgendwie nicht schaffe, 2 SQL Statements zur Ausführung vor der Sicherung hinzuzufügen.
Ich hoffe, ich hab's halbwegs verständlich beschrieben.
|
|
   |
 |
Anzeigen
|
Posted:
Anzeigen |
 |
|
| |
 |
DSB
Developer


Age: 41
Joined: 30 Apr 2004
Posts: 16073
Location: Reichenberg bei Würzburg

|
Posted:
2009-08-21, 13:53 Re: SQL Statements vor und nach Backup |
  |
Leider funktioniert das so nicht.
« Jens_K » wrote: Der Dumper scheint sich als Allererstes zu ermitteln, welche Tabellen er denn bitteschön so alles sichern soll.
Der Dumper ermittelt die Tabellennamen nicht dynamisch zum Zeitpunkt des Aufrufs, sondern in dem Moment, wo Du die Konfiguration speicherst, werden die zu sichernden Tabellen in der Konfigurationsdatei abgelegt. Deshalb hat ein temporäres Umbenennen der Tabellen hier keinen Effekt.
Quote: Mein zweites Problem ist, dass ich es irgendwie nicht schaffe, 2 SQL Statements zur Ausführung vor der Sicherung hinzuzufügen.
Momentan führt der Dumper nur ein Statement aus.
Genau hier steckt noch eine Menge Verbesserungspotential im Dumper. Sowohl das dynamische Ermitteln der Tabellennamen, als auch das selektive Ein- und Aussschließen von Tabellen (nicht nur per Präfix), bzw. Wählen, ob nur die Struktur oder auch die Daten gesichert werden sollen, habe ich im Hinterkopf. Intern habe ich im Code bereits einiges umgestellt, um das später einmal umsetzen zu können.
Dies werde ich aber erst angehen können, nachdem noch einige, im Detail versteckte, "Unschönheiten" im SQLBrowser beseitigt sind. Deshalb mache ich hier keine Zeitangabe, sondern verbessere den Dumper still und heimlich immer mal wieder.
Du könntest das lösen, indem Du ein kleines PHP-Skript schreibst, welches die beiden Tabellen umbenennt und diese Tabellen mit dem Originalnamen leer anlegt. Dann käme der Aufruf des Dumpers und anschließend löscht ein zweites Skript die beiden Tabellen wieder und benennt die umbenannten Tabellen wieder um.
Zum jetzigen Zeitpunkt kann dieser Fall nicht mit reinen Boardmitteln des Dumpers gelöst werden.
_________________ Gruß / Greetings, DSB
Teigwaren heißen Teigwaren, weil sie Teig waren.
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
|
|
    |
 |
Jens_K
Moderator

Age: 37
Joined: 04 Sep 2007
Posts: 1710
Location: Nähe Bielefeld

|
Posted:
2009-08-21, 14:12 (No subject) |
  |
In welcher Konfigurationsdatei werden die Tabellennamen denn abgelegt?
Da ich eh' für jede DB eine eigene Konfigurationsdatei habe, habe ich mir jetzt für das - manuelle - Sichern per PHP eine (mit allen Tabellen) gemacht, für den Cronjob aber eine eigene. Und in der könnte ich dann doch einfach die beiden nicht gewünschten Tabellen entfernen.
Solange ich dann die Konfig-Datei über das Web GUI nicht erneut speichere, sollte das dann doch den gewünschten Effekt haben, oder?
Das mit dem kleinen PHP-Script ist so eine Sache ... ein ILE-RPG Programm bastle ich Dir gerne, das sowas macht ... aber PHP ist noch nicht so meine Stärke :-)
_________________ It's like math-camp all over again ... not ... that i've ever been to math-camp!
mein Blog
|
|
   |
 |
DSB
Developer


Age: 41
Joined: 30 Apr 2004
Posts: 16073
Location: Reichenberg bei Würzburg

|
Posted:
2009-08-21, 14:32 (No subject) |
  |
« Jens_K » wrote: In welcher Konfigurationsdatei werden die Tabellennamen denn abgelegt?
PHP: Konfigname.php
Perl: Konfigname.conf.php
Quote: Solange ich dann die Konfig-Datei über das Web GUI nicht erneut speichere, sollte das dann doch den gewünschten Effekt haben, oder?
Ja.
Quote: Das mit dem kleinen PHP-Script ist so eine Sache ... ein ILE-RPG Programm bastle ich Dir gerne, das sowas macht ... aber PHP ist noch nicht so meine Stärke :-)
Ah, ein Mann aus der i-Welt.
[offtopic]
Zend und IBM haben da gerade in jüngster Vergangenheit eine Menge getan, um PHP auf der i zu etablieren. Mit Release V6.1 ist PHP sogar im OS integriert. Schau Dir mal die PHP-Funktionen an, um native auf die i zuzugreifen und Du wirst PHP erstens innerhalb kürzester Zeit verstehen und zweitens schnell lieben.
Damit ist nahezu alles möglich: Zugriff auf die DB2, Aufruf von RPG-Programmen mit Parameterübergabe und Entgegennahme, SOAP-Web-Services, Nutzen von ZendFramework, usw..
Kurzum: browserbasierte Anwendungen sind über ZendCore problemlos auf der i ausführbar und verbinden so die Power der i mit der unübertroffenen Webfähigkeit von PHP in geschäftskritischen und skalierbaren Anwendungen.
Wenn Du einmal browserbasierte Ausgaben über Templates in PHP gemacht hast, wirst Du RPG dafür nicht mehr nutzen.
So, Ende der Werbestunde.
[/offtopic]
_________________ Gruß / Greetings, DSB
Teigwaren heißen Teigwaren, weil sie Teig waren.
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
|
|
    |
 |
Jens_K
Moderator

Age: 37
Joined: 04 Sep 2007
Posts: 1710
Location: Nähe Bielefeld

|
Posted:
2009-08-21, 15:14 (No subject) |
  |
In meiner Konfigname.php steht aber nix weltbewegendes drin, nur
$databases['db_actual_tableselected'] = '';
Und in der zugehörigen Konfigname.conf.php kann ich gar nichts finden, was auf Tabellennamen hinweist.
[OT]
Auf unserer aktuellen Produktivmaschine (erst letzte Woche gekommen!) haben wir noch V5R4 drauf. Die wird auch primär im Rechenzentrumsbetrieb genutzt, wobei die darauf laufenden Anwendungen doch schon arg angestaubt sind. Geld für Neuentwicklungen hat scheinbar gerade niemand übrig :-)
[/OT]
_________________ It's like math-camp all over again ... not ... that i've ever been to math-camp!
mein Blog
|
|
   |
 |
DSB
Developer


Age: 41
Joined: 30 Apr 2004
Posts: 16073
Location: Reichenberg bei Würzburg

|
Posted:
2009-08-21, 15:29 (No subject) |
  |
« Jens_K » wrote: In meiner Konfigname.php steht aber nix weltbewegendes drin
...
Und in der zugehörigen Konfigname.conf.php kann ich gar nichts finden, was auf Tabellennamen hinweist.
Oh, sorry. Da habe ich mich mit Datenbanknamen und Tabellennamen vertan. Die Datenbanknamen werden aus der Konfiguration genommen. Die Tabellennamen werden aber doch dynamisch ermittelt.
Dabei ist die Reihenfolge so, dass erst der SQL-Query geschickt wird (siehe crondump.pl ab Zeile 214) und anschließend dynamisch die Tabellennamen ermittelt werden (Zeile 314 ff). Insofern müsste das doch funktionieren.
Quote:
[OT]Auf unserer aktuellen Produktivmaschine (erst letzte Woche gekommen!) haben wir noch V5R4 drauf. [/OT]
Das macht nichts. Zend bietet für ZendCore ein wunderbar einfaches Setup an. Von einem Win-PC brauchst Du lediglich den User angeben (QSECOFR oder andere mit entsprechenden Berechtigungen) und schon wird alles per Savefile übertragen und installiert (inkl. MySQl wenn gewünscht). Das habe sogar ich hinbekommen.
Ich kann Dir nur empfehlen die halbe Stunde einmal zu investieren und Dich da ein wenig umzusehen. Das lohnt sich definitiv.
Wenn das steht kannst Du anschließend uneingeschränkt sämtliche Open Source Programme wie Wikis, Foren, CRM-Systeme usw. auf der i laufen lassen (auch den Dumper *g*). Das spart sogar Kosten, da man so eben nicht neu entwickeln muss, sondern auf bewährte OS-Software setzen kann. Und da bietet PHP nun wirklich einen riesigen Pool an bereits lange entwickelter und ausgereifter Software - vom kleinen Gästebuch bis hin zum CMS Typo3 ist alles möglich.
Da müsste Dir eigentlich jeder EDV-Leiter zu Füßen liegen, wenn Du durch ein paar Mausklicks in der Setup-Routine der Software so viel neue Funktionalität ohne zusätzliche Kosten bereit stellen kannst.
_________________ Gruß / Greetings, DSB
Teigwaren heißen Teigwaren, weil sie Teig waren.
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
|
|
    |
 |
Jens_K
Moderator

Age: 37
Joined: 04 Sep 2007
Posts: 1710
Location: Nähe Bielefeld

|
Posted:
2009-08-21, 15:43 (No subject) |
  |
« DSB » wrote: Insofern müsste das doch funktionieren.
Müsste, tut's aber nicht :-)
Ich bastle mal noch ein wenig rum.
Und den Zend Core werde ich mal installieren und gucken - Danke für den Tipp!
|
|
   |
 |
DSB
Developer


Age: 41
Joined: 30 Apr 2004
Posts: 16073
Location: Reichenberg bei Würzburg

|
Posted:
2009-08-21, 15:48 (No subject) |
  |
« Jens_K » wrote: Müsste, tut's aber nicht :-)
Wird denn die Ausführung des Queries im complete Log positiv quittiert?
_________________ Gruß / Greetings, DSB
Teigwaren heißen Teigwaren, weil sie Teig waren.
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
|
|
    |
 |
Jens_K
Moderator

Age: 37
Joined: 04 Sep 2007
Posts: 1710
Location: Nähe Bielefeld

|
Posted:
2009-08-21, 16:43 (No subject) |
  |
Ja.
Quote: 21.08.2009 16:41:41 Start Dump 'd00ba12c_2009_08_21_16_41.sql.gz'
21.08.2009 16:41:41 executing Query before Dump (ALTER TABLE phpbb_search_wordmatch RENAME AS search_wordmatch) was successful
21.08.2009 16:41:45 Schwerwiegender Fehler: die CREATE-Anweisung der Tabelle 'phpbb_search_wordmatch' in der Datenbank 'd00ba12c' konnte nicht gelesen werden! <br>
Überprüfe die Tabelle auf Fehler.: Table 'd00ba12c.phpbb_search_wordmatch' doesn't exist
|
|
   |
 |
DSB
Developer


Age: 41
Joined: 30 Apr 2004
Posts: 16073
Location: Reichenberg bei Würzburg

|
Posted:
2009-08-21, 16:51 (No subject) |
  |
Moment mal, warum ist die Fehlerausgabe auf deutsch? Ich denke, wir reden hier vom Perl-Skript? Dort ist alles auf englisch. Oder setzt Du versehentlich eine alte Version von crondump.pl ein?
_________________ Gruß / Greetings, DSB
Teigwaren heißen Teigwaren, weil sie Teig waren.
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
|
|
    |
 |
Jens_K
Moderator

Age: 37
Joined: 04 Sep 2007
Posts: 1710
Location: Nähe Bielefeld

|
Posted:
2009-08-21, 17:20 (No subject) |
  |
Sorry. Mein Fehler.
Ich erzähle hier die ganze Zeit was von Perl, teste aber ständig mit der PHP Version des Backups. Ich dachte wohl, die Routinen sind die selben. Können sie ja aber gar nicht sein, ist ja ein anderes Script.
Ich habe übrigens zwei SQL Statements angelegt
vor_Dump = "ALTER TABLE phpbb_search_wordmatch RENAME AS search_wordmatch;ALTER TABLE phpbb_search_wordlist RENAME AS search_wordlist;"
nach_Dump = "ALTER TABLE search_wordmatch RENAME AS phpbb_search_wordmatch;ALTER TABLE search_wordlist RENAME AS phpbb_search_wordlist;"
Im Perl Log steht
Quote: 21.08.2009 17:17:02 Configurationfile 'Test_DB.conf.php' was loaded successfully from Querystring .
21.08.2009 17:17:02 Compression Library loaded successfully...
21.08.2009 17:17:02 FTP Library loaded successfully...
21.08.2009 17:17:02 Mail Library loaded successfully...
21.08.2009 17:17:02
executing Query before Dump was successful
21.08.2009 17:17:02 Characterset of connection and backup file set to utf8.
21.08.2009 17:17:02 Searching for tables inside database `d00ba12c` with prefix 'phpbb_'
21.08.2009 17:17:02 Optimizing tables:
[snip]
21.08.2009 17:Finished backup of database `d00ba12c`.
21.08.2009 17:17:04 Sending E-Mail ...
21.08.2009 17:17:05 E-Mail with backup d00ba12c_2009_08_21_17_17.sql.gz sent successfully.
21.08.2009 17:17:05 Recipient/s: meine@domain.de
21.08.2009 17:17:05
executing Query after Dump was successful
21.08.2009 17:17:05 Starting autodelete function:Keep the latest 10 backup files for each database and delete older ones.
21.08.2009 17:17:05 No file to delete.
21.08.2009 17:17:05 Everythings is done: closing script 21.08.2009 17:17:05
21.08.2009 17:17:05 total time used: 4 sec.
21.08.2009 17:17:05 #EOS (End of script)17:02 55 tables have been optimized
21.08.2009 17:17:02 Found 55 tables with 7872 records.
[snip]
Alles in Allem ... funktioniert!
|
|
   |
 |
DSB
Developer


Age: 41
Joined: 30 Apr 2004
Posts: 16073
Location: Reichenberg bei Würzburg

|
Posted:
2009-08-21, 17:24 (No subject) |
  |
Na dann scheint es für Perl ja doch zu funktionieren.
Bei PHP werden auch einige Daten in der Session abgelegt. Hier werde ich das bei Gelegenheit noch einmal prüfen. Es kann sein, dass hier die Vorgehensweise abweicht. Natürlich ursprünglich immer vor dem Hintergrund Rechenzeit zu sparen so gut es geht, was in diesem speziellem Anwendungsfall wohl hinderlich ist.
_________________ Gruß / Greetings, DSB
Teigwaren heißen Teigwaren, weil sie Teig waren.
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
|
|
    |
 |
DSB
Developer


Age: 41
Joined: 30 Apr 2004
Posts: 16073
Location: Reichenberg bei Würzburg

|
Posted:
2009-08-21, 17:47 (No subject) |
  |
Mich irritierte, dass die einzelnen Queries nicht im Log auftauchen und habe dabei noch ein paar Kleinigkeiten entdeckt, die verbessert werden sollten. So wird hier zum Beispiel das Socket nicht beachtet wenn eines benutzt wird.
Da kommt heute also noch ein Update des Perlskripts ins SVN.
Du hast aber zumindest schon einmal entdeckt, dass im Perlskript bereits mehrere Queries hintereinander abgearbeitet werden können. Anhand des Semikolons wird der Gesamtstring zerlegt und dann die einzelnen Queries an MySQL gesendet. Erolg und/oder Mißerfolgt werden für jeden einzelnen Query protokolliert (so sollte es zumindest sein) und ausgegeben - zumindest nach meiner Verbesserung.
_________________ Gruß / Greetings, DSB
Teigwaren heißen Teigwaren, weil sie Teig waren.
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
|
|
    |
 |
Jens_K
Moderator

Age: 37
Joined: 04 Sep 2007
Posts: 1710
Location: Nähe Bielefeld

|
Posted:
2009-08-21, 18:13 (No subject) |
  |
|
   |
 |
DSB
Developer


Age: 41
Joined: 30 Apr 2004
Posts: 16073
Location: Reichenberg bei Würzburg

|
Posted:
2009-08-21, 18:22 (No subject) |
  |
Ja, da muss ich noch etwas optimieren.
Ich habs auf dem Zettel.
_________________ Gruß / Greetings, DSB
Teigwaren heißen Teigwaren, weil sie Teig waren.
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
|
|
    |
 |
|
|
CrackerTracker © 2004 - 2012 CBACK.de
Powered by Orion based on phpBB
© 2001, 2002 phpBB Group
CBACK Orion Style based on FI Theme
All times are GMT + 2 Hours
phpBB SEO
|