CLI AI

Eine MySQL-Tabelle sichern und nur sie zurückspielen

2026-08-16

mysqldump -u root -p --single-transaction shop orders --result-file=orders.sql sichert eine Tabelle aus einer Datenbank, und mysql shop < orders.sql spielt sie zurück, ohne eine andere anzufassen. Zwei Dinge verschweigt die Kurzantwort: der Dump beginnt mit DROP TABLE IF EXISTS, und mit --where sichern Sie nur die Zeilen, die Sie brauchen.

1. Eine Tabelle sichern

clai
$ clai sichere die tabelle orders aus der datenbank shop→ mysqldump -h my8 -uroot -p --single-transaction shop orders --result-file=orders.sql

Zuerst der Datenbankname, dann die Tabellen, durch Leerzeichen getrennt. --single-transaction zieht einen InnoDB-Dump ohne Sperren — an einer laufenden Datenbank ist dieses Flag keine Option. --result-file statt > erhält die Zeilenenden und verhindert, dass Fehlertext im Dump landet.

2. Was in so einem Dump steht

clai
$ clai zeige die aussagekräftigen zeilen des dumps→ grep -E 'DROP TABLE|CREATE TABLE|INSERT INTO' orders.sqlDROP TABLE IF EXISTS `orders`;CREATE TABLE `orders` (INSERT INTO `orders` VALUES (1,'acme',120.50,'2026-08-01'),(2,'globex'

Und hier das, was niemand erwähnt. Die allererste Anweisung ist DROP TABLE IF EXISTS. Das Zurückspielen mischt keine Daten hinzu, es ersetzt die Tabelle durch ihren Zustand zum Zeitpunkt des Dumps.

3. Nur die Struktur, keine Zeilen

clai
$ clai sichere nur die struktur der tabelle orders→ mysqldump -h my8 -uroot -p --no-data shop orders --result-file=schema.sql

--no-data behält CREATE TABLE und lässt jedes INSERT weg — geprüft, die Datei enthält keine einzige Einfügung. Praktisch, um das Schema von Produktion und Testsystem per diff zu vergleichen.

4. Nur die benötigten Zeilen sichern

clai
$ clai sichere nur die bestellungen aus august→ mysqldump -h my8 -uroot -p --single-transaction --where="created >= '2026-08-01'" shop orders --result-file=august.sqlINSERT INTO `orders` VALUES (1,'acme',120.50,'2026-08-01'),(3,'initech',45.20,'2026-08-10');

Zwei von drei Zeilen kamen hinein — die Juli-Bestellung fiel weg. Oben steht das INSERT aus der entstandenen Datei. So macht man chirurgische Auszüge: nach Datum, nach Kunde, nach ID-Bereich.

5. Eine Tabelle in eine laufende Datenbank zurückspielen

clai
$ clai spiele die tabelle orders aus dem dump zurück→ mysql -h my8 -uroot -p shop < orders.sql

An einer laufenden Datenbank geprüft: orders hatte vorher 2 Zeilen und danach 3, während die Nachbartabelle customers exakt so blieb, wie sie war. Genau so rollt man eine Tabelle zurück, ohne die übrigen zu stören.

6. Derselbe Dump in eine andere Datenbank

clai
$ clai lade den tabellendump in die datenbank shop_copy→ mysql -h my8 -uroot -p shop_copy < orders.sql

Ein Einzeltabellen-Dump enthält weder CREATE DATABASE noch USE, also bestimmt das Argument von mysql das Ziel. Geprüft: in shop_copy entstand eine Tabelle orders mit allen drei Zeilen.

Gotchas

  • Ein Einzeltabellen-Dump beginnt mit DROP TABLE. Alles, was nach dem Dump in die Tabelle geschrieben wurde, verschwindet beim Zurückspielen. Wenn Sie wirklich anhängen wollen, sichern Sie mit --no-create-info.
  • --no-create-info läuft in den Primärschlüssel. Geprüft: das Laden über bestehende Zeilen ergibt ERROR 1062 (23000) at line 24: Duplicate entry '1' for key 'orders.PRIMARY'. Anhängen klappt nur bei neuen Zeilen — vorher leeren oder --insert-ignore bzw. --replace ergänzen.
  • Ohne --single-transaction sperrt der Dump die Tabelle. Bei MyISAM unvermeidlich, bei InnoDB ein selbst verursachter Ausfall mitten am Tag.

Related questions

Wie sichere ich mehrere Tabellen? Einfach aufzählen: mysqldump shop orders customers. Das Gegenstück ist --ignore-table=shop.logs, das eine ausschließt.

Wie komprimiere ich den Dump direkt? mysqldump … | gzip > dump.sql.gz, zurück mit zcat dump.sql.gz | mysql shop. Mit --result-file geht das nicht, denn das schreibt die Datei selbst.

Wie steht mysqldump zu mysqlpump und mydumper? Beide Konkurrenten sichern parallel und gewinnen bei großen Datenbanken, doch mysqldump gibt es überall und seine Ausgabe liest ein Mensch.

See also

CliAI schreibt die Dump-Zeile mit den Flags, die die Lage verlangt, und zeigt sie, bevor sie die Datenbank berührt. In einer Zeile installieren.