| Author |
Message |
marting
knows MySQLDumper

Joined: 05 Dec 2011
Posts: 8

|
Posted:
2011-12-05, 18:40 Probleme mit MySQL 4.0 [Config für CRON] |
  |
Hallo,
ich habe bei Multipartdumps unter MySQL 4.0 Probleme. Unter 5.1 tritt das Problem nicht auf. Es gibt ja zwei Config Files. Eines, das für den Cron Parser vorbereitet ist (.conf.php) und eines für mysqldumper selbst (.php).
Es macht den Anschein, als kommt mysqldumper beim Anlegen des Perl Conf Files durcheinander. Und es scheint ein wenig darauf anzukommen, ob die DB alphabetisch vor oder hinter der mysql DB kommt.
Hier der Auszug aus der PHP Config:
$databases['db_selected_index'] = '0';
$databases['db_actual'] = 'a_test';
$databases['multi']=array();
$databases['multi'][0] = 'a_test';
$databases['multi'][1] = 'test_db';
$databases['multi_praefix']=array();
$databases['multi_praefix'][0] = '';
$databases['multi_praefix'][1] = '';
$databases['multisetting'] = 'a_test;test_db';
$databases['db_actual_tableselected'] = '';
und hier aus der Perl:
$cron_dbindex=-2;
$cron_printout=1;
$cronmail=1;
$cronmail_dump=0;
$cronmailto="";
$cronmailto_cc="";
$cronmailfrom="mysqldumper";
$cron_use_sendmail=1;
$cron_smtp="localhost";
$cron_smtp_port="25";
@cron_db_array=("a_test");
@cron_dbpraefix_array=("");
@cron_command_before_dump=("");
@cron_command_after_dump=("");
Eine DB ist verloren gegangen. Und es ist unabhängig davon, wie oft ich die Konfig neu anlege. Bei nur einer gewählten DB ist das Array komplett leer.
Das Problem tritt zwar während des Crons auf, die Config wird aber durch PHP erstellt, also ist es wahrscheinlich hier richtig.
Gibt es da irgendeinen Kompatibiltätsmodus für alte MySQL Versionen? Bzw. ist das Problem und woran liegt es?
Viele Grüße
Martin
|
|
  |
 |
Anzeigen
|
Posted:
Anzeigen |
 |
|
| |
 |
marting
knows MySQLDumper

Joined: 05 Dec 2011
Posts: 8

|
Posted:
2011-12-05, 18:45 (No subject) |
  |
Ein Workaround für mich ist, die eine DB manuell zu wählen, weil auf dem Server glücklicherweise nur eine DB relevant ist. Dann steht sie auch ordnungsgemäß im Array.
|
|
  |
 |
marting
knows MySQLDumper

Joined: 05 Dec 2011
Posts: 8

|
Posted:
2011-12-05, 18:55 (No subject) |
  |
Noch ein Nachtrag: Wenn Multidumper ausgewählt ist, stehen bei PHP und Perl gleichermaßen die korrekten DBs in der Oberfläche, aber die Perl Config ist trotzdem falsch.
|
|
  |
 |
DSB
Developer


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

|
Posted:
2011-12-05, 21:16 (No subject) |
  |
Hallo Martin,
ja, das riecht nach einem Bug den ich bisher bei mir aber noch nicht nachvollziehen konnte. Er scheint auch nur auf wenigen Servern aufzutreten, so dass die Eingrenzung zusätzlich erschwert wird.
Da wir mittlerweile aber an Version 2 arbeiten und dort das gesamte Handling überarbeitet wird, werden wir an der 1.xer Reihe keine weiteren Bug fixes mehr vornehmen.
_________________ 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.
|
|
    |
 |
marting
knows MySQLDumper

Joined: 05 Dec 2011
Posts: 8

|
Posted:
2011-12-06, 12:33 (No subject) |
  |
Okay, wenn Interesse besteht, würde ich mich selbst um einen Fix bemühen, alternativ klappt bei mir zum Glück ja der Workaround.
|
|
  |
 |
DSB
Developer


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

|
Posted:
2011-12-06, 12:36 (No subject) |
  |
Das kannst Du natürlich gerne machen und das Ergebnis hier veröffentlichen.
Allerdings ist die Stelle so richtig gruseliger PHP4-Spaghetti-Code und macht keinen Spaß.
Deshalb machen wir in V2 ja alles neu.
_________________ 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.
|
|
    |
 |
marting
knows MySQLDumper

Joined: 05 Dec 2011
Posts: 8

|
Posted:
2011-12-06, 14:47 (No subject) |
  |
Ich habe schon schlimmeres gesehen :-)
Okay, Fehler lokalisiert. Hat nichts mit MySQL 4 zu tun. Ist bei MySQL 5 sogar noch heftiger. Statt einer werden bis zu zwei DBs nicht gesichert (wegen zusätzlicher information_schema Datenbank).
Eine mögliche Fehler Konstellation ist (betrifft nur Multidump-User):
[x] A
[x] B
[_] information_schema
[x] K
[_] mysql
[x] N
[x] O
[x] P
=> A, B, N und P werden gesichert, K und O aber nicht.
Andere Konstellation:
[x] A
[_] B
[_] information_schema
[x] J
[x] K
[_] mysql
[x] N
[x] O
[x] P
=> A, J, N und O werden gesichert, K und P aber nicht
Oder anders: Sei i die alphabetische Position der information_schema DB und j von mysql, so werde die i+1 te der ausgewählten DBs sowie die j+2 te nicht mitgesichert.
Der langen Rede kurzer Sinn: In WriteCronScript wird über ein Array iteriert, das eine andere Länge hat, als das, welches geändert wird. Fix functions.php (aktuelle Version) ab Zeile 391:
< foreach ($databases['Name'] as $k=>$v) {
< if (in_array($v, $dontBackupDatabases)) {
< unset($cron_db_array[$k],
< $cron_dbpraefix_array[$k],
< $cron_command_before_dump[$k],
< $cron_command_after_dump[$k],
< $newDbNames[$k]);
< }
< }
> foreach ($databases['Name'] as $k=>$v) {
> if (in_array($v, $dontBackupDatabases)) {
> unset($newDbNames[$k]);
> }
> }
> foreach ($cron_db_array as $k=>$v) {
> if (in_array($v, $dontBackupDatabases)) {
> unset($cron_db_array[$k],
> $cron_dbpraefix_array[$k],
> $cron_command_before_dump[$k],
> $cron_command_after_dump[$k]);
> }
> }
Der Einfachkeit halber zwei Schleifen, wenngleich das sicher eleganter geht.
Gruß Martin
|
|
  |
 |
marting
knows MySQLDumper

Joined: 05 Dec 2011
Posts: 8

|
Posted:
2011-12-06, 14:54 (No subject) |
  |
Vielleicht noch kurz zur Erklärung (im Multidump-Fall):
$databases['Names'] hält alle DBs
$cron_db_array hält alle ausgewählten DBs
information_schema steht in databases['Names'] z.B. an 5. Stelle. In $cron_db_array gibt es information_schema aber nicht, deshalb wird die DB entfernt, die in databases['Names'] eigentlich erst an 6. Stelle steht.
|
|
  |
 |
DSB
Developer


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

|
Posted:
2011-12-06, 22:58 (No subject) |
  |
@marting
Super und herzlichen Dank für Deinen Fix. Obwohl ich anhand des Codes erwarte, dass der Grund gefunden und eliminiert ist: kann das bitte mal jemand gegenchecken, der das Problem hat und hier Feedback geben?
_________________ 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.
|
|
    |
 |
marting
knows MySQLDumper

Joined: 05 Dec 2011
Posts: 8

|
Posted:
2011-12-07, 12:06 (No subject) |
  |
Normalerweise müsste das Problem jeden betreffen. Probier doch mal eine Sicherung bei Dir mit dieser Konstellation. Es tritt halt erst dann auf, wenn insgesamt mehr DBs gesichert werden sollen, als die Stelle der ersten Sonderdatenbank in alphabetischer Reihenfolge ist.
Kannst Du den Fehler mit diesen Infos nicht reproduzieren? Wenn Du nicht weißt, was ich meine, dann schicke mir doch mal per PN eine Liste Deiner DBs und ich sage Dir, welche Du beispielsweise auswählen musst, um den Fehler zu reproduzieren.
|
|
  |
 |
DSB
Developer


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

|
Posted:
2011-12-08, 00:02 (No subject) |
  |
Ich schaue mir das am Sonntag mal genau an. Vorher komme ich nicht dazu.
Wäre natürlich schön, wenn jemand anders das vorher schon einmal checken könnte.
_________________ 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:
2011-12-08, 01:49 (No subject) |
  |
|
   |
 |
marting
knows MySQLDumper

Joined: 05 Dec 2011
Posts: 8

|
Posted:
2012-02-03, 12:07 (No subject) |
  |
Gibt es dazu noch etwas neues?
|
|
  |
 |
DSB
Developer


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

|
Posted:
2012-02-03, 21:22 (No subject) |
  |
Der Code aus dem Fix oben soll funktionieren.
_________________ 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
|