mysqldump Syntax

Hallo Habo.
Ich möchte mir ein kleines Script anlegen, um eine MYSQL-Datenbank auf einem Server komplett zu sichern. Das Ganze plane ich mit einem kleinen Bashscript , dass per Cronjob ausgeführt wird. Soweit eigentlich gar kein Problem. Doch irgendwie hänge ich an der Befehls-Synatx fest.

mysqldump -u root -p passwort --all-databases > backup.sql

Sollte eigentlich ein Backup meiner kompletten Datenbanken machen.

Folgende Fehlermeldung wird in backup.sql geschrieben :

Code:
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help

@Mods : Sry, wenn ich hier im falschem Thread bin aber ich habs mal unter Linux gepostet, da ich das ganze auf einem Linuxsystem am laufen habe.
 
Spar dir die Arbeit. ;) Sofern du komplett alle Datenbanken dumpen willst, dann nutze einfach das folgende Skript. Ich nutze das seit Jahren in dieser Form, wenn ich Komplett-Backups brauche. Ansonsten findest du meine Parameter-Empfehlung in der Variable $base_dump_command, falls du es doch selbst schreiben willst.

Code:
#!/usr/bin/perl

use strict;
use DBIx::DWIW;

my $database = 'mysql'; # we're using 'mysql' per default
my $backup_from = 'localhost';
my $dbuser = 'root';
my $dbpass = 'passwort'; # change this for your needs
my $backup_dir = '/backup/'; # change this for your needs

my $base_dump_command = "mysqldump -h $backup_from -u $dbuser -p$dbpass -l -c -v --quote-names";
my $command;

my $datum = `date`;

# connect to server
my $conn = DBIx::DWIW->Connect(DB=>$database,
    User=>$dbuser,
    Pass=>$dbpass,
    Host => $backup_from
                               );

print "$datum\n";

# check the timeout and set it to endless
printf "Timeout: %d\n", $conn->Timeout();
if($conn->Timeout() != 0) {
    $conn->Timeout(0);
    printf "Timeout changed to %d!\n", $conn->Timeout();
}

# give me all databases
my @db_list = $conn->FlatArray("SHOW DATABASES");
# walk through databases and dump them
for my $db (@db_list) {
    $database = $db;
    printf "Reading %s\n", $database;
    $command = $base_dump_command." ".$database." > ".$backup_dir."/".$database.".sql";
    printf "%s\n", $command;
    system($command);
}

Edit: Dein Syntax-Fehler liegt übrigens beim Passwort. Das Passwort muss ohne Freizeichen hinter '-p' angegeben werden.
 
Zurück
Oben