Output von mysqldump auf stdout

theton

theton

Bitmuncher
Wie kann ich mysqldump beibringen, dass es seinen Output nicht auf stderr, sondern auf stdout ausgeben soll?
 
Code:
mysqldump foobar 2>&1

klappt nicht?
 
Nein, geht so nicht. Ich werde mal versuchen das Problem etwas genauer zu erläutern. Ich will z.B. die DB xrms sichern und mache das in einem Skript, das dann beispielsweise folgenden Code ausführt:
Code:
echo "Database xrms"
mysqldump -h db.server.net -u root -pmeinpasswort -l -c -v --quote-names xrms > xrms.sql
Dabei kommt dann auf stderr ein Output der Art
Code:
-- Retrieving table structure for table ControlledObject...
-- Sending SELECT query...
-- Retrieving rows...
-- Retrieving table structure for table ControlledObjectRelationship...
-- Sending SELECT query...
-- Retrieving rows...
-- Retrieving table structure for table GroupMember...
-- Sending SELECT query...
-- Retrieving rows...
...
während der echo-Befehl seinen Output auf stdout auswirft.
Diesen Output möchte ich nun zusammen mit anderem Output des Skripts (der auf stdout ausgegeben wird) in eine Logdatei schreiben. Da mysqldump aber auf stderr schreibt, kann ich momentan nur 2 getrennte Log-Dateien verwenden
Code:
./meindumpskript > backup.log 2> backup.err
In der backup.log landet jeglicher Output des Skripts (z.B. die echo-Befehle mit den DB-Namen), während in der backup.err nur der Output von mysqldump landet. Nun will ich das aber in einer einzigen Logdatei haben, so dass das Log nachher etwa so aussieht:
Code:
Database xrms
-- Retrieving table structure for table ControlledObject...
-- Sending SELECT query...
-- Retrieving rows...
-- Retrieving table structure for table ControlledObjectRelationship...
-- Sending SELECT query...
-- Retrieving rows...
-- Retrieving table structure for table GroupMember...
-- Sending SELECT query...
-- Retrieving rows...
...
Damit das aber geht, müsste der Output von mysqldump auf stdout ankommen, damit ich es mit einer einfachen Umleitung '>' in die backup.log umleiten kann.
 
Hmm,

kannst du das Ganze nicht einfach an tee pipen?

So müsste das IMHO klappen.
 
tee liest ja auch nur vom stdin, wenn ich nicht falsch informiert bin.
 
an sich gibts den parameter -q, wenn ich micht recht erinnere. der schupft nach stdout.
 
Also in der Manpage ist nichts darüber zu finden, vor allem auch nicht, wie ich tee dazu bewegen könnte von stderr und nicht von stdout zu lesen.
Der Parameter -q von mysqldump sorgt lediglich dafür, dass der Output nicht gebuffert wird, sondern direkt an stdout geleitet wird. Das würde evtl. den Dump etwas beschleunigen, bringt mir aber nichts, wenn ich die "System-Meldungen" von mysqldump auf dem stdout haben will. Der Dump selbst landet ja eh immer auf stdout.
Evtl. ist das mit mysqldump ja auch der falsche Ansatz. Alternative Vorschläge zum Dumpen von MySQL-DBs sind daher auch willkommen. :)
 

Ähnliche Themen

df -h anpassen für Auswertung

Kernel-Log, das "dmesg" ausgibt, löschen?

günstiger Mehr-Kerner (CPU) für VMs

Port Forwarding mit iptables

Console I/O mit loggen

Zurück
Oben