Gibt es eine Möglichkeit, bestimmte Tabellen mit dem Befehl mysqldump einzuschränken?
Zum Beispiel würde ich die folgende Syntax verwenden, um nur Tabelle1 und Tabelle2 zu sichern:
mysqldump -u username -p database table1 table2 > database.sql
Aber gibt es eine ähnliche Möglichkeit, alle Tabellen außer Tabelle1 und Tabelle2 zu sichern? Ich habe in der mysqldump-Dokumentation nichts gefunden. Ist Brute-Force (Angabe aller Tabellennamen) der einzige Weg?
Aufbauend auf der Antwort von @ Brian-Fisher und der Beantwortung der Kommentare einiger Leute in diesem Beitrag habe ich eine Reihe großer (und unnötiger) Tabellen in meiner Datenbank, daher wollte ich deren Inhalt beim Kopieren überspringen, aber die Struktur beibehalten ::
Die resultierenden zwei Dateien sind strukturell einwandfrei, aber die ausgegebenen Daten sind jetzt ~ 500 MB anstatt 9 GB, viel besser für mich. Ich kann diese beiden Dateien jetzt zu Testzwecken in eine andere Datenbank importieren, ohne mir Gedanken über die Bearbeitung von 9 GB Daten oder den Speicherplatz machen zu müssen.
quelle
für mehrere Datenbanken:
quelle
mysqld
undmysqldump
würde die gleichen Programme sein.Ein weiteres Beispiel zum Ignorieren mehrerer Tabellen
Verwenden
--ignore-table
und Erstellen eines Arrays von Tabellen mit Syntax wiedatabase.table
Links mit Informationen, die Ihnen helfen werden
Ausgabe komprimieren mysqldump
Datenbank importieren
Einfaches Skript zum Ignorieren von Tabellen
quelle
Um einige Tabelle ausschließen Daten , aber nicht die Tabellenstruktur . So mache ich das:
Speichern Sie die Datenbankstruktur aller Tabellen ohne Daten:
Speichern Sie dann die Datenbank mit Daten, mit Ausnahme der ausgeschlossenen Tabellen, und sichern Sie die Struktur nicht:
So laden Sie es in eine neue Datenbank:
quelle
Sie können den
mysqlpump
Befehl mit dem verwendenBefehl. Es gibt eine durch Kommas getrennte Liste von Tabellen an, die ausgeschlossen werden sollen.
Die Syntax von mysqlpump ist mysqldump sehr ähnlich, aber viel leistungsfähiger. Weitere Informationen zur Verwendung der Ausschlussoption finden Sie hier: https://dev.mysql.com/doc/refman/5.7/en/mysqlpump.html#mysqlpump-filtering
quelle
Speichern Sie alle Datenbanken mit allen Tabellen, überspringen Sie jedoch bestimmte Tabellen
auf github: https://github.com/rubo77/mysql-backup.sh/blob/master/mysql-backup.sh
Mit ein wenig Hilfe von https://stackoverflow.com/a/17016410/1069083
Es verwendet lzop, das viel schneller ist, siehe: http://pokecraft.first-world.info/wiki/Quick_Benchmark:_Gzip_vs_Bzip2_vs_LZMA_vs_XZ_vs_LZ4_vs_LZO
quelle
Ich mag die Lösung von Rubo77, ich hatte sie nicht gesehen, bevor ich Pauls modifiziert habe. Dieser wird eine einzelne Datenbank sichern, mit Ausnahme aller Tabellen, die Sie nicht möchten. Es wird dann gzip und löscht alle Dateien, die älter als 8 Tage sind. Ich werde wahrscheinlich 2 Versionen davon verwenden, die einmal am Tag eine vollständige (Minus-Protokoll-Tabelle) erstellen, und eine andere, die nur die wichtigsten Tabellen sichert, die sich stündlich am meisten ändern, mit ein paar Cron-Jobs.
quelle
Der Vollständigkeit halber ist hier ein Skript, das tatsächlich ein Einzeiler sein kann, um ein Backup von einer Datenbank zu erhalten, wobei alle Ansichten ausgeschlossen (ignoriert) werden. Es wird angenommen, dass der Datenbankname Mitarbeiter ist:
Sie können die Logik der Abfrage aktualisieren. Im Allgemeinen können Sie mit
group_concat
undconcat
fast jeden gewünschten String- oder Shell-Befehl generieren.quelle