Wracając 16 grudnia 2011 roku, odpowiedziałem na pytanie W jaki sposób mysqldump określonych tabel (y)?
Zebrałem wszystkie tabele, nie zawierające określonego zestawu nazw tabel.
Korzystając z tych samych zasad, możesz zebrać wszystkie nazwy baz danych z tabeli metadanych information_schema.schemata
, które chcesz mysqldump'd, utworzyć zapytanie w celu zwrócenia tej listy, a następnie użyć tej listy baz danych do sformułowania polecenia mysqldump.
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
Wszystko, co musisz zrobić, to umieścić bazy danych, w których nie chcesz mysqldump'd DATABASES_TO_EXCLUDE
Spróbuj !!!
information_schema
że i tak nie zostanie zrzucony.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.htmlUżyj grep, aby wykluczyć bazy danych, których nie chcesz:
Patrząc na /programming/19354870/bash-command-line-and-input-limit wydaje się, że będziesz w stanie obsłużyć długie linie. W przeciwnym razie zawsze możesz
źródło
grep
, aby przejść z wyjścia wielowierszowego do pojedynczego wiersza z każdą nazwą bazy danych oddzieloną spacją, która jest wymagana przezmysqldump
. Tak więc polecenie będziecandidates=$(echo "show databases" | mysql | grep -Ev "^(Database|mysql|performance_schema|information_schema)$" | paste -sd " " -)
Nie sądzę, aby było to możliwe, ale możesz wypróbować te rozwiązania, które będziesz musiał wpisać nazwy wszystkich baz danych, które chcesz zrzucić.
Daj mi znać, jeśli rozwiązanie pomoże.
źródło
Nawet tutaj jest tak wiele doskonałych odpowiedzi, więc ten post to tylko jeden dodatkowy wybór. Poniżej 2 wierszy skryptu możesz zabrać swoje serwery z kopii zapasowej DB, ignorując trochę DB.
źródło
sys
ponieważ jest to część MySQL 5.7Alternatywnie możesz spojrzeć na następujące linki;
Mysqldump Ignoruj opcję bazy danych
Kilka hacków do symulacji mysqldump --ignore-database
Implementowanie mysqldump –ignore-database
Daj mi znać, jeśli rozwiązanie pomoże.
Powodzenia!
źródło
Wiele osób zawsze chciało, aby mysqldump ignorował bazy danych.
Czy uważasz, że ta opcja istnieje teraz? Nie, nie w mysqldump.
Oracle (Fuj, toowee, wciąż nie zjeżdża z języka) ma DataPump (expdb impdp) do zrzucania baz danych Oracle. Ponieważ MySQL 5.7 w rodzinie Oracle (wciąż boli), nowy program narzędziowy do tworzenia kopii zapasowych nazywa się mysqlpump , który zawiera --exclude-databases i inne fajne opcje. Podobnie jak jego starsza brat danych , mysqlpump ma również równoległość, która przyspiesza zrzuty i dzieli pracę . W tej chwili nie brałem udziału w pracy, ale wygląda to bardzo obiecująco. Gdy zagłębię się w mysqlpump , może się okazać, że ma on ten sam wygląd i działanie, co pompa danych Oracle .
Jeśli jest ktoś w MySQL Parallel Universe z historiami na ten temat, opublikuj go tutaj.
źródło
Odpowiedź Rolando jest całkiem dobra, ale chciałem skryptu, który może być ponownie użyty w różnych projektach. Więc wziąłem jego skrypt i zmodyfikowałem go, abyś mógł robić takie rzeczy jak:
Oto zmodyfikowany skrypt:
(Nadal mam nadzieję, że
--ignore-database
opcja zostanie dodana do przyszłej wersji mysqldump)źródło
Od MySQL 5.7.8 możesz używać
mysqlpump
(co NIE jest takie samo jakmysqldump
) w następujący sposób:Po prostu zamień
db1,db2,db3,db4
na cztery bazy danych, które chcesz wykluczyć.Źródło: Blog serwera MySQL
źródło