blog.bartlweb - a technologist's external brain

die Verwendung von mysqldump

Neben PHP-basierten Tools wie phpMyAdmin oder MysqlDumper lassen sich Datenbanken auch bequem per Kommandozeile und dem von MySQL mitgelieferten Tool mysqldump backupen und auch wieder herstellen. Bei der so generierten Datei handelt es sich immer um Standard-SQL-Befehle und können daher jederzeit mit beliebigen Tools wieder in die Datenbank eingespielt werden.

Backup erstellen

mysqldump -u [Benutzername] -p[Password] -h [Datenbankserver] --verbose [Datenbank] > [Datei]

Hinweis: Der nicht vorhandene Abstand bei -p[Password] ist korrekt. Sie können auch nur den Parameter -p angeben um das Passwort erst nach Aufforderung einzugeben.

Beispiel: mysqldump -u root -proot -h mydbserver.com -verbose typo3 > test.sql

Beim Erstellen des Backups wird standardmäßig die aktuelle gelesene Tabelle für Schreibvorgänge gesperrt um so Inkonsistenzen zu vermeiden. Dadurch kann es allerdings vorkommen, dass Anwendungen die in Tabellen schreiben müssen während der Zeit des Backups nicht oder nur fehlerhaft funktionieren. Wer das Risiko von inkonsistenten Datensätzen eingehen kann, kann über den Paramater --lock-tables das Sperren verhindern.

mysqldump -u [Benutzername] -p[Password] -h [Datenbankserver] --verbose --lock-tables=false [Datenbank] > [Datei]

Optionen

alle Datenbanken des Servers sichern

mysqldump -u [Benutzername] -p[Password] -h [Datenbankserver] --verbose --all-databases > [Datei]

nur die Datenbankstruktur aber keine Daten sichern

mysqldump -u [Benutzername] -p[Password] -h [Datenbankserver] --verbose --no-data [Datenbank] > [Datei]

nur Daten aber keine Struktur (kein drop oder create table)

mysqldump -u [Benutzername] -p[Password] -h [Datenbankserver] --verbose --no-create-db --no-create-info [Datenbank] > [Datei]

Backup in eine existierende Datenbank einspielen

mysql -u [Benutzername] -p[Password] [Datenbank] < [Datei] Beispiel: mysql -u root -proot testdb_2011 < dump.sql

Backup ohne existierende Datenbank einspielen (SQL-Datei mit DB-Create-Statement)

mysql -u [Benutzername] -p[Password] < [Datei] Beispiel: mysql -u root -proot < dump.sql

Dieser Artikel hat Dir deinen Tag gerettet?

... und mühevolles Probieren, Recherchieren und damit Stunden an Zeit gespart? Oder einfach nur Dein Problem gelöst?

Dann würde ich mich freuen, wenn Du meine Zeit für die Erstellung dieses Blogartikels mit einer kleinen Anerkennung honorierst:

Zahlung mit PayPal oder Kreditkarte.

Hinweis zur Verwendung

Die Übermittlung einer Zahlung ist eine persönliche Anerkennung Ihrerseits an den Entwickler (Christian Bartl, Privatperson). Eine Zahlung ist nicht zweckgebunden und es ist keine Gegenleistung zu erwarten. Bitte beachten Sie, dass für eine übermittelte Zahlung keine Quittung ausgestellt werden kann.

Über den Autor

Christian Bartl

Christian Bartl Requirements Engineer
& Solution Architect für Online und Mobile

Als Technologie-Enthusiast und begeisterter Programmierer entwickle ich in meiner Freizeit Websites, Software und IT-Lösungen, die mir selbst und anderen den Alltag vereinfachen.

mehr auf christian.bartl.me

Kommentare

  1. Nun, dann will ich mal der erste sein, der deine Seite nicht nur nutzt, sondern sich auch mal bedankt. ;)

    Baue mir gerade eine Datenbank auf - hab' in "man mysqldump" geblättert, aber mit Google (Suchbegriff: "mysqldump nur daten") ging's entschieden schneller. (Nur die Datenbankstruktur oder nur die Daten sichern). ;) Also danke!

    Hartmut

    kommentieren

    1. Leider funktioniert das nur in einer Richtung:

      mysqldump -u [Benutzername] -p[Password] -h [Datenbankserver] --verbose --no-create-db --no-create-info [Datenbank] > [Datei]

      Wenn man dann ganz "blind" den Dump zurückspeichert, ist die Konsistenz der Datenbank im Gesäß (wenn's überhaupt geht). Die SQL-Statements im Dump sehen nämlich pro Tabelle so aus:

      LOCK TABLES `tabelle1` WRITE;
      /*!40000 ALTER TABLE `tabelle1` DISABLE KEYS */;
      INSERT INTO `tabelle1` VALUES ( ...... );
      /*!40000 ALTER TABLE `splits` ENABLE KEYS */;
      UNLOCK TABLES;

      kommentieren

  2. Was wird gesichert wenn man nur

    mysqldump --opt -u [Benutzername] --password=[Password] -P 3306 [Datenbank] > [Datei]

    eingibt?

    Bert

    kommentieren

Kommentar schreiben

Der hier angegebene Name wird gemeinsam mit deinem Kommentar auf der Website veröffentlicht.

Deine E-Mail-Adresse wird zur einmaligen Benachrichtigung bei Veröffentlichung des Kommentars genutzt.

Benachrichtigung per E-Mail über Antworten auf meinen Kommentar erhalten.

Bitte tippe die Zahlenkombination "9692" ein, nur dann kann ich deinen Kommentar entgegennehmen.

Bitte fülle dieses Feld nicht aus, nur dann kann ich deinen Kommentar entgegennehmen.