Zurück am 16.12.2011 habe ich die Frage beantwortet Wie können Sie eine bestimmte Tabelle (n) mysqldump?
Ich habe alle Tabellen ohne bestimmte Tabellennamen gesammelt.
Nach den gleichen Grundsätzen könnten Sie alle Datenbanknamen aus der Metadatentabelle erfassen information_schema.schemata
, die mysqldump enthalten soll, eine Abfrage erstellen, um diese Liste zurückzugeben, und dann diese Liste von Datenbanken verwenden, um den Befehl mysqldump zu formulieren.
DATABASES_TO_EXCLUDE="db1 db2 db3"
EXCLUSION_LIST="'information_schema','mysql'"
for DB in `echo "${DATABASES_TO_EXCLUDE}"`
do
EXCLUSION_LIST="${EXCLUSION_LIST},'${DB}'"
done
SQLSTMT="SELECT schema_name FROM information_schema.schemata"
SQLSTMT="${SQLSTMT} WHERE schema_name NOT IN (${EXCLUSION_LIST})"
MYSQLDUMP_DATABASES="--databases"
for DB in `mysql -ANe"${SQLSTMT}"`
do
MYSQLDUMP_DATABASES="${MYSQLDUMP_DATABASES} ${DB}"
done
MYSQLDUMP_OPTIONS="--routines --triggers"
mysqldump ${MYSQLDUMP_OPTIONS} ${MYSQLDUMP_DATABASES} > MySQLDatabases.sql
Alles, was Sie tun müssen, ist die Datenbanken, in die mysqldump'd nicht eingefügt werden soll DATABASES_TO_EXCLUDE
Versuche es !!!
information_schema
es sowieso nicht abgeladen wird.mysqldump does not dump the INFORMATION_SCHEMA or performance_schema database by default. To dump either of these, name it explicitly on the command line and also use the --skip-lock-tables option. You can also name them with the --databases option. Before MySQL 5.5 mysqldump silently ignores INFORMATION_SCHEMA even if you name it explicitly on the command line.
dev.mysql.com/doc/refman/5.5/en/mysqldump.htmlVerwenden Sie grep, um nicht gewünschte Datenbanken auszuschließen:
Vom Blick auf /programming/19354870/bash-command-line-and-input-limit scheint es , wie Sie lange Linien behandeln werden können. Ansonsten kannst du immer
quelle
grep
ein, um von der mehrzeiligen Ausgabe in eine einzelne Zeile zu wechseln. Dabei wird jeder Datenbankname durch ein Leerzeichen getrennt, das von benötigt wirdmysqldump
. Der Befehl lautet alsocandidates=$(echo "show databases" | mysql | grep -Ev "^(Database|mysql|performance_schema|information_schema)$" | paste -sd " " -)
Ich denke nicht, dass es möglich ist, aber Sie können diese Lösung ausprobieren, bei der Sie die Namen aller Datenbanken eingeben müssen, die Sie sichern möchten.
Lassen Sie mich wissen, ob die Lösung hilft.
quelle
Auch hier so viele hervorragende Antworten, so ist dieser Beitrag nur eine weitere Auswahl hinzuzufügen. Mit weniger als 2 Zeilen im Skript können Sie die Sicherung aller DBs auf Ihren Servern durchführen, wobei einige DBs ignoriert werden.
quelle
sys
denn das ist Teil von MySQL 5.7Alternativ können Sie sich die folgenden Links ansehen.
Mysqldump Ignore Database Option
Ein paar Hacks um mysqldump --ignore-database zu simulieren
Implementierung von mysqldump –ignore-database
Lassen Sie mich wissen, ob die Lösung hilft.
Viel Glück!
quelle
Viele wollten schon immer, dass mysqldump Datenbanken ignoriert.
Würden Sie glauben, dass diese Option jetzt existiert? Nein, nicht in mysqldump.
Oracle (Yuck, toowee, noch immer nicht von der Zunge runter ) hat DataPump (expdb impdp) , um Oracle-Datenbanken zu sichern . Seit MySQL 5.7 in der Oracle-Familie (das immer noch weh tut) wird das neue Sicherungsdienstprogramm aufgerufen Probleme bereitet mysqlpump und enthält --exclude-database und andere nützliche Optionen. Wie sein älterer Stiefbruder Datenpumpe , mysqlpump verfügt auch über Parallelität zu helfen beschleunigen Deponien und dividieren Arbeit . Zu diesem Zeitpunkt habe ich mich noch nicht in den Job eingearbeitet, aber es sieht sehr vielversprechend aus. Wenn ich tief in mysqlpump eintauche, stelle ich möglicherweise fest, dass es dasselbe Erscheinungsbild wie die Oracle- Datenpumpe aufweist .
Wenn es jemanden im MySQL Parallel Universe gibt, der Geschichten darüber hat, posten Sie diese bitte hier.
quelle
Die Antwort von Rolando ist ziemlich gut, aber ich wollte ein Skript, das projektübergreifend wiederverwendet werden kann. Also nahm ich sein Skript und änderte es so, dass Sie Dinge tun können wie:
Hier ist das geänderte Skript:
(Ich hoffe immer noch, dass eine
--ignore-database
Option zu einer zukünftigen Version von mysqldump hinzugefügt wird)quelle
Seit MySQL 5.7.8 können Sie
mysqlpump
(was NICHT dasselbe istmysqldump
) wie folgt verwenden:Einfach austauschen
db1,db2,db3,db4
Sie einfach die vier Datenbanken, die Sie ausschließen möchten.Quelle: MySQL Server Blog
quelle