Czy istnieje sposób ograniczenia niektórych tabel za pomocą polecenia mysqldump?
Na przykład użyłbym następującej składni, aby zrzucić tylko tabelę 1 i tabelę 2:
mysqldump -u username -p database table1 table2 > database.sql
Ale czy istnieje podobny sposób na zrzucenie wszystkich tabel oprócz tabeli 1 i tabeli 2 ? Nie znalazłem niczego w dokumentacji mysqldump, więc czy brute-force (określając wszystkie nazwy tabel) to jedyna droga?
Opierając się na odpowiedzi z @ Brian-Fisher i odpowiadając na komentarze niektórych osób w tym poście, mam w bazie danych kilka ogromnych (i niepotrzebnych) tabel, więc chciałem pominąć ich zawartość podczas kopiowania, ale zachowaj strukturę :
Wynikowe dwa pliki mają dobrą konstrukcję, ale zrzucone dane mają teraz ~ 500 MB zamiast 9 GB, co jest dla mnie znacznie lepsze. Mogę teraz zaimportować te dwa pliki do innej bazy danych w celach testowych bez martwienia się o manipulację 9 GB danych lub brak miejsca na dysku.
źródło
dla wielu baz danych:
źródło
mysqld
imysqldump
będą to te same programy.Kolejny przykład ignorowania wielu tabel
za pomocą
--ignore-table
i stwórz tablicę tabel z podobnymi składniamidatabase.table
Linki z informacjami, które ci pomogą
kompresuj wyjście mysqldump
Importuj bazę danych
Prosty skrypt do ignorowania tabel
źródło
Aby wykluczyć niektóre dane tabeli , ale nie strukturę tabeli . Oto jak to robię:
Zrzuć strukturę bazy danych wszystkich tabel bez żadnych danych:
Następnie zrzuć bazę danych z danymi, z wyjątkiem wykluczonych tabel, i nie zrzucaj struktury:
Następnie, aby załadować go do nowej bazy danych:
źródło
Możesz użyć
mysqlpump
polecenia zKomenda. Określa listę tabel oddzielonych przecinkami do wykluczenia.
Składnia mysqlpump jest bardzo podobna do mysqldump, ale jest o wiele bardziej wydajna. Więcej informacji na temat korzystania z opcji wykluczenia można przeczytać tutaj: https://dev.mysql.com/doc/refman/5.7/en/mysqlpump.html#mysqlpump-filtering
źródło
Zrzuć wszystkie bazy danych ze wszystkimi tabelami, ale pomiń niektóre tabele
na github: https://github.com/rubo77/mysql-backup.sh/blob/master/mysql-backup.sh
Z niewielką pomocą https://stackoverflow.com/a/17016410/1069083
Używa lzopa, który jest znacznie szybszy, patrz: http://pokecraft.first-world.info/wiki/Quick_Benchmark:_Gzip_vs_Bzip2_vs_LZMA_vs_XZ_vs_LZ4_vs_LZO
źródło
Podoba mi się rozwiązanie Rubo77, nie widziałem go przed modyfikacją Paula. Ta utworzy kopię zapasową pojedynczej bazy danych, z wyłączeniem tabel, których nie chcesz. Następnie spakuje go gzipem i usunie wszystkie pliki starsze niż 8 dni. Prawdopodobnie użyję 2 wersji tego, które wykonują pełny (minus dziennik tabeli) raz dziennie, i kolejnej, która po prostu tworzy kopie zapasowe najważniejszych tabel, które zmieniają się najbardziej co godzinę przy użyciu kilku zadań cron.
źródło
Dla kompletności, oto skrypt, który w rzeczywistości może być jednym wierszem, aby uzyskać kopię zapasową z bazy danych, wykluczając (ignorując) wszystkie widoki. Zakłada się, że nazwa db to pracownicy:
Możesz zaktualizować logikę zapytania. Ogólnie używając
group_concat
iconcat
możesz wygenerować prawie każdy pożądany ciąg lub polecenie powłoki.źródło