mysql dump ohne exec oder system

mysql dump ohne exec oder system

am 27.03.2006 12:03:15 von Oliver Meister

Guten Tag Miteinander

Für eine kleine BackupLösung verwende ich momentan
system("/usr/bin/mysqldump -A -u USERNAME -p PASSWORT -h
DATENBANKSERVER DATENBANKNAME >
/ABSOLUTER_PFAD_ZUM_DUMP_VERZEICHNIS/dump.sql", $fp);

Ich möchte dies nun ohne system oder exec Befehl bewerkstelligen.

Aus den FAQs entnehme ich, dass dies im Allgemeinen mit SELECT
Statements realisiert wird.

Gibt es einen DUMP Befehl über die mysql_ Syntax? Oder eine
alternative Lösung und Systemcommandos?

Grüsse
Oliver

Re: mysql dump ohne exec oder system

am 27.03.2006 19:36:53 von Thomas Rachel

Oliver Meister wrote:

> Für eine kleine BackupLösung verwende ich momentan
> system("/usr/bin/mysqldump -A -u USERNAME -p PASSWORT -h
> DATENBANKSERVER DATENBANKNAME >
> /ABSOLUTER_PFAD_ZUM_DUMP_VERZEICHNIS/dump.sql", $fp);
>
> Ich möchte dies nun ohne system oder exec Befehl bewerkstelligen.

Das klingt so, als hättest Du vor, Dein Backup direkt von der Anwendung
durchführen zu lassen.

Bestünde denn die Möglichkeit, diese Aufgabe auszukoppeln und sie
beispielsweise als cron-Job laufen zu lassen?


> Aus den FAQs entnehme ich, dass dies im Allgemeinen mit SELECT
> Statements realisiert wird.

Das geht natürlich auch, wenn Du vorab die genaue Struktur der Datenbank
kennst oder bei eventuellen Änderungen dieselbe nachführst und die Daten
dann speicherst.

Dies dann aber in einem Format, das sich möglichst einfach wieder
zurückspielen läßt - entweder über dann wiederum selbstgestrickte INSERTs
oder aber mit einem restore-Programm, das diese Aufgabe übernimmt.

> Gibt es einen DUMP Befehl über die mysql_ Syntax? Oder eine
> alternative Lösung und Systemcommandos?

Das dafür am geeignetste Systemkommando kennst Du bereits. Ein mysql_dump
oder ähnliches gibt es nicht.


Thomas

Re: mysql dump ohne exec oder system

am 27.03.2006 23:53:28 von Dirk Brosowski

Oliver Meister schrieb:
> Guten Tag Miteinander
>
> Für eine kleine BackupLösung verwende ich momentan
> system("/usr/bin/mysqldump -A -u USERNAME -p PASSWORT -h
> DATENBANKSERVER DATENBANKNAME >
> /ABSOLUTER_PFAD_ZUM_DUMP_VERZEICHNIS/dump.sql", $fp);
>
> Ich möchte dies nun ohne system oder exec Befehl bewerkstelligen.
>
> Aus den FAQs entnehme ich, dass dies im Allgemeinen mit SELECT
> Statements realisiert wird.
>
> Gibt es einen DUMP Befehl über die mysql_ Syntax? Oder eine
> alternative Lösung und Systemcommandos?

Hast du schonmal die Dokumentation unter www.mysql.com zu Rate gezogen?
Evtl. kannst du auch einfach mal google fragen.

Viel Spass

Dirk

Re: mysql dump ohne exec oder system

am 28.03.2006 05:07:31 von Johannes Vogel

Hi Oliver

Oliver Meister wrote:
> Für eine kleine BackupLösung verwende ich momentan
> system("/usr/bin/mysqldump -A -u USERNAME -p PASSWORT -h
> DATENBANKSERVER DATENBANKNAME >
> /ABSOLUTER_PFAD_ZUM_DUMP_VERZEICHNIS/dump.sql", $fp);
> Ich möchte dies nun ohne system oder exec Befehl bewerkstelligen.

> Aus den FAQs entnehme ich, dass dies im Allgemeinen mit SELECT
> Statements realisiert wird.
>
> Gibt es einen DUMP Befehl über die mysql_ Syntax? Oder eine
> alternative Lösung und Systemcommandos?

Das soll hier nicht persönlich sein - auch wenn's so wirken mag. Aber
ganz ehrlich: Hast du mal darüber nachgedacht, welchen Unsinn du hier
erfragst?
Du möchtest ein Systemkommando, welches du aber nicht über system oder
exec ausführen möchtest?

Womit willst du ein Systemkommando in deiner Applikationssprache
(Scheint mir nach PHP zu riechen?) ausführen?

Was genau gefällt dir an mysqldump nicht, dass du ein anderes Programm
suchst, das genau diesen Job ausführt?

HTH, Johannes

Re: mysql dump ohne exec oder system

am 28.03.2006 08:51:00 von Oliver Meister

Hallo Thomas
Danke für Deine Antworten.

> Das klingt so, als hättest Du vor, Dein Backup direkt von der Anwendung
> durchführen zu lassen.

> Bestünde denn die Möglichkeit, diese Aufgabe auszukoppeln und sie
> beispielsweise als cron-Job laufen zu lassen?

In der Tat könnte ich das über den Cron laufen lassen - was
konzeptionel auch eine vernünftige Lösung ist.

Die Idee war aber folgende:
Damit ich ganz gemütlich einige Webseiten Backupen kann habe ich mir
einen Skript erdacht,
welches sich selbsständig auf dem Remote Server installiert, die mysql
Datenbanken dumpt und zusätzlich die gesammte (oder die Ausgewählte)
Direktory Struktur Zippt.
Das ganze wird dann auf den Backupserver geschickt, wo die Datenbanken
eingelesen werden und die Directory Struktur kopiert wird.
Der Clue am ganzen ist, dass ich meinem Lokalen Server nur die FTP
Daten (natürlich noch DB User und Passwort) angeben muss und er die
benötigten Installations-Dateien automatisch Remote installiert.

- system und exec sind auf einigen Hostern gesperrt weshalb ich nach
einer alternativen Lösung gesucht habe.

> Dies dann aber in einem Format, das sich möglichst einfach wieder
> zurückspielen läßt - entweder über dann wiederum selbstgestrickte=
INSERTs
> oder aber mit einem restore-Programm, das diese Aufgabe übernimmt.

Ja, das habe ich ins Auge gefasst... sofern ich keinen Workarround für
die System/ exec Commands finde.
Technisch ist ja nicht sooo der Aufwand einen Importer/ Exporter zu
schreiben für SQL. ... Aaaaber "mysql_DUMP" wäre schon praktisch
gewesen :-)

Grüsse=20
Oliver

Re: mysql dump ohne exec oder system

am 28.03.2006 08:55:35 von Oliver Meister

Hi Dirk

> Hast du schonmal die Dokumentation unter www.mysql.com zu Rate gezogen?
> Evtl. kannst du auch einfach mal google fragen.

In der Tat habe ich einige Zeit mit Suchen verbracht - das Posting in
der NG ist immer die letzte Option.
Von mysql (5.x) habe ich mysql_dump_debug gefunden [1]... was aber
nicht dumpt (?).

Hattest Du konkret eine Funktion im Sinn als Du gepostet hast?

Gruss
Oliver

[1]
http://dev.mysql.com/doc/refman/5.1/en/mysql-dump-debug-info .html

Re: mysql dump ohne exec oder system

am 28.03.2006 08:57:06 von Oliver Meister

> Das soll hier nicht persönlich sein - auch wenn's so wirken mag. Aber
> ganz ehrlich: Hast du mal darüber nachgedacht, welchen Unsinn du hier
> erfragst?
> Du möchtest ein Systemkommando, welches du aber nicht über system oder
> exec ausführen möchtest?

"Wie die Nase des Mannes so sein Johannes" :-)

Grüsse
Oliver

Re: mysql dump ohne exec oder system

am 28.03.2006 09:33:03 von Christian Kirsch

Oliver Meister wrote:
> Hi Dirk
>
>
>>Hast du schonmal die Dokumentation unter www.mysql.com zu Rate gezogen?
>>Evtl. kannst du auch einfach mal google fragen.
>
>
> In der Tat habe ich einige Zeit mit Suchen verbracht - das Posting in
> der NG ist immer die letzte Option.
> Von mysql (5.x) habe ich mysql_dump_debug gefunden [1]... was aber
> nicht dumpt (?).
>

Sondern? Was tut es denn Deiner Meinung nach sonst?

Re: mysql dump ohne exec oder system

am 28.03.2006 10:39:47 von Oliver Meister

> Sondern? Was tut es denn Deiner Meinung nach sonst?
(Hast Du die Frage ernst gmeint? (Bin jetzt grad ein bisschen
verunsichert) ..aber wohl nicht.. (?) )
Ich habe da eigentlich keine Meinung dazu. Meinungen habe ich
grundsätzlich NACH Feierabend und im Urlaub. Und diese wiederum
varieren je nach Alkoholgehalt (die Meinungen) - oder wieviel
mechanisch stärker mein Gegenüber ist.
:-)

Wenn Du aber unter [1] schnell nachguckst, dann steht da geschrieben:

Description
Instructs the server to write some debug information to the log. For
this to work, the connected user must have the SUPER privilege.

Grüsse
Oliver

[1]
http://dev.mysql.com/doc/refman/5.1/en/mysql-dump-debug-info .html

Re: mysql dump ohne exec oder system

am 28.03.2006 11:07:38 von Axel Schwenke

Christian Kirsch wrote:
> Oliver Meister wrote:
>>
>> In der Tat habe ich einige Zeit mit Suchen verbracht - das Posting in
>> der NG ist immer die letzte Option.
>> Von mysql (5.x) habe ich mysql_dump_debug gefunden [1]... was aber
>> nicht dumpt (?).
>
> Sondern? Was tut es denn Deiner Meinung nach sonst?

Es schreibt Debug-Informationen (z.B. wieviel RAM wofür alloziert
wurde) ins Errorlog.

Was mysqldump angeht - das ist eine ganz gewöhnliche Client-Appli-
kation. Es setzt ganz gewöhnliche SHOW CREATE TABLE und SELECT * FROM
Statements ab und schreibt deren Ergebnisse geordnet raus. Wenn man
unbedingt will, kann man das auch in PHP nachbauen.


XL

Re: mysql dump ohne exec oder system

am 28.03.2006 11:18:46 von Christian Kirsch

Oliver Meister wrote:
>>Sondern? Was tut es denn Deiner Meinung nach sonst?
>
> (Hast Du die Frage ernst gmeint? (Bin jetzt grad ein bisschen
> verunsichert) ..aber wohl nicht.. (?) )
> Ich habe da eigentlich keine Meinung dazu. Meinungen habe ich
> grundsätzlich NACH Feierabend und im Urlaub. Und diese wiederum
> varieren je nach Alkoholgehalt (die Meinungen) - oder wieviel
> mechanisch stärker mein Gegenüber ist.
> :-)
>
> Wenn Du aber unter [1] schnell nachguckst, dann steht da geschrieben:
>
> Description
> Instructs the server to write some debug information to the log. For
> this to work, the connected user must have the SUPER privilege.
>
> Grüsse
> Oliver
>
> [1]
> http://dev.mysql.com/doc/refman/5.1/en/mysql-dump-debug-info .html
>

Dafür, dass Du so erhebliche Probleme mit dem Lesen und Schreiben hast,
reißt Du den Mund hier ganz schön weit auf. Dein Subject heißt 'mysql
dump'. Es gibt ein Mysql-Kommandozeilenwerkzeug namens 'mysqldump', das
tut genau das, was Du willst. Was Du wissen könntest, wenn Du die
Dokumentation wirklich gelesen hättest.

Wenn Du etwas anderes meinst, nämlich 'mysql-dump-debug-info', dann
solltest Du vielleicht genau das schreiben, und zwar von Anfang an.

Re: mysql dump ohne exec oder system

am 28.03.2006 13:23:14 von Thomas Rachel

Christian Kirsch wrote:

> Dafür, dass Du so erhebliche Probleme mit dem Lesen und Schreiben hast,
> reißt Du den Mund hier ganz schön weit auf. Dein Subject heißt 'mysql
> dump'. Es gibt ein Mysql-Kommandozeilenwerkzeug namens 'mysqldump', das
> tut genau das, was Du willst. Was Du wissen könntest, wenn Du die
> Dokumentation wirklich gelesen hättest.

Hat er ganz am Anfang, in
<1143453795.049335.60850@j33g2000cwa.googlegroups.com>, ja auch
geschrieben.


> Wenn Du etwas anderes meinst, nämlich 'mysql-dump-debug-info', dann
> solltest Du vielleicht genau das schreiben, und zwar von Anfang an.

Genau das will er ja eben nicht - ich zitiere:

| Von mysql (5.x) habe ich mysql_dump_debug gefunden [1]... was aber
| nicht dumpt (?).

Womit er vermutlich meint: "... was aber nicht in meinem Sinne die komplette
Datenbank dumpt, sondern eben 'Instructs the server to write some debug
information to the log. For this to work, the connected user must have the
SUPER privilege.', was ich nicht will."

Thomas

Re: mysql dump ohne exec oder system

am 28.03.2006 14:04:27 von Johannes Vogel

Hi Oliver

Oliver Meister wrote:
> Für eine kleine BackupLösung verwende ich momentan
> system("/usr/bin/mysqldump -A -u USERNAME -p PASSWORT -h
> DATENBANKSERVER DATENBANKNAME >
> /ABSOLUTER_PFAD_ZUM_DUMP_VERZEICHNIS/dump.sql", $fp);
> Ich möchte dies nun ohne system oder exec Befehl bewerkstelligen.
> Aus den FAQs entnehme ich, dass dies im Allgemeinen mit SELECT
> Statements realisiert wird.
> Gibt es einen DUMP Befehl über die mysql_ Syntax? Oder eine
> alternative Lösung und Systemcommandos?

Jetzt habe ich das einfach nochmals gelesen und bin dank der
Unterstützung meiner Kristallkugel auf eine annehmbare Lösung gekommen.

Die Lösung ist: Du benutzt PHP!
Übrigens eine Sache, die du nicht erwähnst.

Ich erinnere dich aber gerne zwischendurch kurz, dass wir hier bei
de.comp.datenbanken.mysql sind - kein Bezug also zu PHP. Was du suchst
ist die NG de.comp.lang.php.datenbanken.

Jetzt scheinst du ein Kommando aus dem PHP-Fundus zu suchen, welches
dasselbe macht, wie mysqldump.

Du könntest also zur Dokumentation von PHP browsen und da ins Paket
mysql reinschauen und nach der gesuchten Funktion suchen. php.net/mysql
Du wirst sie nicht finden, weil sie nicht existiert. Und damit ist ja
bereits die Frage beantwortet, ob da eine derartige Funktion existiert.

Ergo könntest du dir ein Skript bauen, welches das selbe macht, wie
mysqldump. Nämlich `show tables`, `show create table ` und
`select * from ` und die Ergebnisse jeweils so zusammen
schneidern, dass ein Dump entsteht. Für einen (Möchtegern-)Profi
wahrlich kein grosser Aufwand!

Und wahrscheinlich fragst du hier danach, ob ein solches PHP-Programm
schon existiert? Du könntest bei PEAR reinschauen, aber da findet man
eher Schnittstellen und dergleichen. Letztendlich bleibt also noch:
26.1. Wo finde ich ein Script, das "xyz" kann?
http://www.php-faq.de/q/q-scripte-finden.html

Zum Abschluss erwähne ich noch, dass ich deine Antwort auf mein Posting
mal tollerant ignorierte. Letztendlich ist deine Frage miserabel
gestellt, du schnödest hier wie der Weltmeister rum und scheinst
offensichtlich keine Ahnung davon zu haben, wovon du schreibst.

HTH und du lässt uns in Ruhe,
Johannes

Re: mysql dump ohne exec oder system

am 28.03.2006 19:32:25 von Dirk Brosowski

Oliver Meister schrieb:
> Hi Dirk
>
>
>>Hast du schonmal die Dokumentation unter www.mysql.com zu Rate gezogen?
>>Evtl. kannst du auch einfach mal google fragen.
>
>
> In der Tat habe ich einige Zeit mit Suchen verbracht - das Posting in
> der NG ist immer die letzte Option.
> Von mysql (5.x) habe ich mysql_dump_debug gefunden [1]... was aber
> nicht dumpt (?).
>
> Hattest Du konkret eine Funktion im Sinn als Du gepostet hast?

Es gibt dort auch ganz sicher in der Doku ein Kapitel zum Thema Backup
etc. Dort sind viele Möglichkeiten gegeben ..

Grüße

Dirk

Re: mysql dump ohne exec oder system

am 28.03.2006 23:10:48 von Oliver Meister

Johannes schrieb:
> Ich erinnere dich aber gerne zwischendurch kurz, dass wir hier bei
> de.comp.datenbanken.mysql sind - kein Bezug also zu PHP. Was du suchst
> ist die NG de.comp.lang.php.datenbanken.

mit diesen Informationen verstehe ich natürlich Dein erstes Posting.

> Jetzt scheinst du ein Kommando aus dem PHP-Fundus zu suchen, welches
> dasselbe macht, wie mysqldump.

Gruss
Oliver

Re: mysql dump ohne exec oder system

am 29.03.2006 19:05:35 von steinboeck

Oliver Meister schrieb:
> Für eine kleine BackupLösung verwende ich momentan
> system("/usr/bin/mysqldump -A -u USERNAME -p PASSWORT -h
> DATENBANKSERVER DATENBANKNAME >
> /ABSOLUTER_PFAD_ZUM_DUMP_VERZEICHNIS/dump.sql", $fp);
>
> Ich möchte dies nun ohne system oder exec Befehl bewerkstelligen.

Jaja, system und exec gehen nicht beim Hoster.
Nicht weiter verwunderlich.
Vielleicht kannst du den Befehl aber auch am eigenen Rechner ausführen?
Dann holt sich das mysqldump die Daten direkt vom Server ... wenn es
nicht durch eine FW gesperrt ist ...

Michael

Re: mysql dump ohne exec oder system

am 30.03.2006 00:52:16 von Johannes Vogel

Hi Michael

Michael Steinböck wrote:
> Vielleicht kannst du den Befehl aber auch am eigenen Rechner ausführen?
> Dann holt sich das mysqldump die Daten direkt vom Server ... wenn es
> nicht durch eine FW gesperrt ist ...

Kennst du n'Hoster, der MySQL über Netzzugriff zulässt?
Natürlich einer, der aber safe_mode=on hat.

Johannes

Re: mysql dump ohne exec oder system

am 30.03.2006 09:11:23 von Oliver Meister

Hallo Michael

> Jaja, system und exec gehen nicht beim Hoster.
> Nicht weiter verwunderlich.

In der Tat ist genau das Problem - obwohl system und exec nicht bei
*allen* Hostern gesperrt ist.
Ich habe auch schon darüber nachgedacht, den Remote Server von Lokal
an zu sprechen (SSH).
Das ginge auch bei meinem Test-Host, allerdings ist dies eher die
Ausnahme als die Regel - wie von Johannes bereits angetönt.

Da ich mir nun sicher bin, dass es (in PHP) keinen mysql_dump Befehl
als Pendant zu mysqldump gibt, werde ich die Aufgabe mit "klassischen"
SELECT Statements lösen - das läuft dann sicher auch auf
verschiedenen Umgebungen.

Grüsse
Oliver