Jak wyodrębnić kopię zapasową tabel z pełnego pliku zrzutu MySQL

Jak wyodrębnić kopię zapasową tabel z pełnego pliku zrzutu MySQL

Mysqldump to narzędzie dostarczone przez MySQL/MariaDB do tworzenia kopii zapasowych baz danych i tabel. Zasadniczo regularnie bierzemy pełny zrzut bazy danych i przechowujemy. Ale czasami musieliśmy odzyskać pojedyncze lub 2-3 tabele z kopii zapasowej. Następnie pytanie, czy przywrócić określoną tabelę z pełnego pliku kopii zapasowej. Ten artykuł pomoże Ci wyodrębnić kopię zapasową tabel z pełnego pliku kopii zapasowej bazy danych. Możemy również wyodrębnić kopię zapasową wszystkich tabel w poszczególnych plikach na tabelę.

Krok 1 - Pobierz skrypt zrzutowy MySQL

Aby podzielić pełny plik kopii zapasowej bazy danych MySQLDUMP w oddzielnej kopii zapasowej plików określonych w tabeli. Utwórz plik o nazwie splitdb.cii i skopiuj poniżej skrypt.

#!/bin/bash #### # podzielić plik sql mysql na jeden plik na tabela # na podstawie http: // blogu.tty.NL/2011/12/28/SPLITING-A-DATABASE-DUMP #### IF [$#-LT 1]; Następnie echo „Zastosowanie 0 $ zrzut_file [tabela]” wyjdź fi if [$# -ge 2]; Następnie csplit -s -ftable 1 "/-Struktura tabeli dla tabeli/" "%-Struktura tabeli dla tabeli„ $ 2 '%""/-Struktura tabeli dla tabeli/""%40103 SET TIME_ZONE =@OLD_TIME_ZONE%1 „Else csplit -s -ftable 1”/ -Struktura tabeli dla tabeli/”* fi [$? -Eq 0] || Exit MV Table00 Plik głowicy = "LS -1 Tabela* | Tail -n 1" If [$# -GE 2]; Następnie MV $ File Foot Else cSplit -b '%d' -s -f $ plik $ plik "/40103 SET TIME_ZONE =@OLD_TIME_ZONE/" * mv $ plik 1 stopa fi dla pliku w pliku w pliku w tabeli ls -1 tabela *'; Do nazwa = "head -n1 $ plik | cut -d $" x60 '-f2' cat head $ plik foot> "$ name.SQL "Zrobiono stolik stóp głowy RM*
123456789101112131415161718192021222324252627282930313233343536#!/bin/bash ##### split mysql zrzuć plik sql na jeden plik na tabela#na podstawie http: // blogu.tty.NL/2011/12/28/SPLITING-A-DATABASE-DUMP #### IF [$#-LT 1]; następnie echo „Zastosowanie 0 $ zrzut_file [tabela]” exitfi if [$# -ge 2]; Następnie csplit -s -ftable 1 "/-Struktura tabeli dla tabeli/" "%-Struktura tabeli dla tabeli„ $ 2 '%""/-Struktura tabeli dla tabeli/""%40103 Set [e-mail chroniony] _Time_zone%% 1 "else csplit -s -ftable 1"/ -Struktura tabeli dla tabeli/"* fi [$? -Eq 0] || Exit MV Table00 Plik głowicy = 'LS -1 Tabela* | ogon -n 1'if [$# -ge 2]; Następnie Mv $ Fille Footelse cSplit -b '%d' -s -f $ plik $ plik "/40103 Ustaw [e -mail chroniony] _time_zone/" * mv $ plik 1 footfi dla pliku w „LS -1 Tabela* ';; Nazwa = 'Head -n1 $ Plik | CUT -d $ 'x60' -f2 'cat head $ file foot> "$ Nazwa.SQL "Zrobiono stolik stóp głowy RM*

Ten skrypt zaczerpnięty z https: // gist.github.com/Jasny/1608062.

Krok 2 - Wyodrębnij wszystkie tabele z zrzutu

W tym przykładzie mam nazwany plik zrzutu MYDB.SQL, które chcę podzielić na małe kopie zapasowe na stół. W tym celu stworzyłem nowy katalog /opt/splitdb i skopiowane powyżej skryptu z imieniem splitdb.cii W tym katalogu. Teraz użyj następującego polecenia, aby wyodrębnić wszystkie tabele w poszczególnych plikach kopii zapasowych.

CD /opt /splitdb chmod +x splitdb.cii ./splitdb.sh mydb.sql #do nie uruchomić polecenie „sh”  

Krok 3 - Wyodrębnij pojedynczy stół z zrzutu

Jeśli chcemy wyodrębnić tylko jedną tabelę, możemy użyć polecenia jak poniżej. Na przykład chcę podzielić tylko tabelę o nazwie my_tbl1 I my_tbl2. Wyodrębni kopię zapasową w bieżącym katalogu pod nazwą my_tbl1.SQL I my_tbl2.SQL.

CD /opt /splitdb chmod +x splitdb.SH SH SPLITDB.sh mydb.sql my_tbl1 sh splitdb.sh mydb.SQL my_tbl2