Kopie zapasowe, przywracanie, import i eksport, spójność, naprawa

INF.03 · teoria
autor: redakcja · 02.11.2026
Kopia struktury i pełna kopia bazy, eksport SQL oraz próbne przywrócenie w oddzielnej bazie. Kontrola spójności, diagnostyka problemów i ograniczenia naprawy tabel InnoDB. Lekcja 9.2 kursu INF.03.
Kopia za­pa­so­wa bazy danych to nie­za­leż­ny zapis po­zwa­la­ją­cy od­two­rzyć okre­ślo­ny stan jej struk­tu­ry lub danych. Na eg­za­mi­nie trzeba utwo­rzyć eks­port, spraw­dzić jego zakres, przy­wró­cić dane i zdia­gno­zo­wać nie­spój­ność. Naj­waż­niej­szym spraw­dze­niem kopii jest udane od­two­rze­nie w kon­tro­lo­wa­nym miej­scu, a nie samo po­ja­wie­nie się pliku SQL.

Co wła­ści­wie jest ko­pio­wa­ne

Struk­tu­ra bazy opi­su­je tabele, ko­lum­ny, typy, klucze i inne obiek­ty. Dane to re­kor­dy za­pi­sa­ne w tych struk­tu­rach. Kopia samej struk­tu­ry po­zwa­la utwo­rzyć puste tabele, lecz nie od­two­rzy za­mó­wień klien­tów. Kopia samych danych wymaga pa­su­ją­cej struk­tu­ry w miej­scu do­ce­lo­wym. W po­le­ce­niu eg­za­mi­na­cyj­nym trzeba od­czy­tać, czy chodzi o struk­tu­rę, dane, obie części czy po­je­dyn­czą tabelę.
Kopia lo­gicz­na za­pi­su­je in­struk­cje od­twa­rza­ją­ce obiek­ty i re­kor­dy, na przy­kład CREATE TABLE i INSERT. Można ją obej­rzeć w edy­to­rze tek­sto­wym i prze­nieść do zgod­ne­go śro­do­wi­ska. Kopia fi­zycz­na obej­mu­je pliki uży­wa­ne przez silnik bazy i wymaga wła­ści­wej pro­ce­du­ry dla tego sil­ni­ka. Przy­pad­ko­we sko­pio­wa­nie ka­ta­lo­gu pra­cu­ją­cej bazy nie gwa­ran­tu­je spój­no­ści plików. Do ćwi­czeń uży­wa­my eks­por­tu lo­gicz­ne­go.
Eks­port jest czyn­no­ścią za­pi­sa­nia wy­bra­nej za­war­to­ści na ze­wnątrz. Staje się ele­men­tem kopii za­pa­so­wej, jeśli obej­mu­je po­trzeb­ny zakres, jest bez­piecz­nie prze­cho­wy­wa­ny i można go od­two­rzyć. CSV (Comma-Separated Values, war­to­ści roz­dzie­la­ne prze­cin­ka­mi) jest przy­dat­ny do wy­mia­ny re­kor­dów, ale sam nie za­cho­wu­je całej de­fi­ni­cji bazy, re­la­cji i wszyst­kich typów tak jak od­po­wied­ni eks­port SQL.

Eks­port w phpMyAdmin i na­rzę­dziu kon­so­lo­wym

W phpMyAdmin naj­pierw wy­bierz bazę lub tabelę, a potem eks­port. Tryb własny po­zwa­la wska­zać tabele oraz za­zna­czyć struk­tu­rę i dane. Dla pełnej kopii ćwi­cze­nio­wej wy­bierz format SQL i obie części. Dla kopii struk­tu­ry po­zo­staw struk­tu­rę bez re­kor­dów. Przed po­bra­niem sprawdź zakres w pod­su­mo­wa­niu, po­nie­waż wy­bra­nie jednej tabeli w drze­wie może ogra­ni­czyć eks­port do niej.
Pro­gram my­sql­dump tworzy kopię lo­gicz­ną MySQL z kon­so­li sys­te­mo­wej. To po­le­ce­nie po­wło­ki, nie SQL do wkle­je­nia w za­kład­kę za­py­tań. Po­niż­szy przy­kład za­kła­da ist­nie­ją­cą bazę sklep, konto ope­ra­tor z po­trzeb­ny­mi pra­wa­mi i tabele InnoDB. Znak > prze­kie­ro­wu­je wynik do pliku.
1
2
mysqldump -u operator -p --single-transaction --no-tablespaces --set-gtid-purged=OFF sklep > sklep-kopia.sql
mysqldump -u operator -p --no-data --no-tablespaces --set-gtid-purged=OFF sklep > sklep-struktura.sql
Opcja -p po­wo­du­je po­pro­sze­nie o hasło, bez wpi­sy­wa­nia go jawnie w treść ko­men­dy. --no-data pomija re­kor­dy. --no-ta­ble­spa­ces pomija in­for­ma­cje o prze­strze­niach tabel, a --set-gtid-purged=OFF pomija usta­wia­nie hi­sto­rii iden­ty­fi­ka­to­rów trans­ak­cji przy tym pro­stym prze­no­sze­niu bazy. To przy­kład dla MySQL, nie kon­fi­gu­ra­cja od­twa­rza­nia re­pli­ka­cji. Do­stęp­ne opcje trzeba do­pa­so­wać do wersji pro­gra­mu.
W MariaDB wła­ści­wym na­rzę­dziem jest ma­riadb-dump; nazwa zgod­no­ści my­sql­dump bywa nadal do­stęp­na, lecz nie każda opcja MySQL ma tam ten sam od­po­wied­nik. Nie kopiuj bez spraw­dze­nia opcji do­ty­czą­cej GTID do klien­ta MariaDB. phpMyAdmin po­zwa­la wy­ko­nać ćwi­cze­nie bez roz­strzy­ga­nia nazwy pro­gra­mu kon­so­lo­we­go. Pod­sta­wy eks­por­tu opi­su­je także lekcja o skryp­tach SQL.

Spójny moment i pełny zakres

Opcja --single-trans­ac­tion przy­go­to­wu­je spójny odczyt danych tabel trans­ak­cyj­nych, takich jak InnoDB. W czasie ta­kie­go eks­por­tu nie należy rów­no­le­gle zmie­niać ich struk­tu­ry. Nie daje ona tej samej gwa­ran­cji dla wszyst­kich sil­ni­ków. Szcze­gó­ły i wy­ma­ga­ne upraw­nie­nia opi­su­je do­ku­men­ta­cja my­sql­dump.
Pełna kopia po­trzeb­na do od­two­rze­nia usługi może wy­ma­gać więcej niż tabel. Pro­ce­du­ry skła­do­wa­ne to za­pi­sa­ne w bazie pro­gra­my, zda­rze­nia wy­ko­nu­ją za­da­nia według har­mo­no­gra­mu, a wy­zwa­la­cze re­agu­ją na okre­ślo­ne ope­ra­cje. Jeśli pro­jekt ich używa, trzeba spraw­dzić, czy eks­port je za­wie­ra. Opcje --ro­uti­nes i --events służą do do­łą­cze­nia pro­ce­dur oraz zda­rzeń w my­sql­dump. Konto eks­por­tu­ją­ce musi mieć wy­ma­ga­ne prawa do ko­pio­wa­nych obiek­tów.
Zapisz datę, nazwę źródła, wersję ser­we­ra i zakres kopii. Ogra­nicz dostęp do pliku, po­nie­waż może za­wie­rać dane oso­bo­we, skróty kryp­to­gra­ficz­ne haseł i in­for­ma­cje biz­ne­so­we. Nie umiesz­czaj go w pu­blicz­nym ka­ta­lo­gu strony. Kopia na tym samym dysku chroni przed czę­ścią po­my­łek, lecz nie przed utratą całego no­śni­ka. Po­trzeb­ne są nie­za­leż­ne kopie i usta­lo­ny sposób ich prze­cho­wy­wa­nia.

Próbne przy­wra­ca­nie

Przy­wra­ca­nie to od­two­rze­nie stanu z kopii. Naj­pierw przy­go­tuj od­dziel­ną bazę te­sto­wą i upew­nij się, że plik nie za­wie­ra in­struk­cji wy­bie­ra­ją­cej lub usu­wa­ją­cej inną bazę. Eks­port może za­wie­rać DROP TABLE, czyli usu­wa­nie ist­nie­ją­cej tabeli. Wgry­wa­nie go bez prze­czy­ta­nia za­kre­su do dzia­ła­ją­cej bazy może nad­pi­sać nowsze dane.
W przy­kła­dzie eks­port utwo­rzo­no bez opcji --da­ta­ba­ses, a plik nie za­wie­ra USE sklep ani two­rze­nia ory­gi­nal­nej bazy. Ad­mi­ni­stra­tor tworzy pustą bazę sklep_proba i przy­dzie­la kontu ope­ra­tor po­trzeb­ny dostęp. Na­stęp­nie w kon­so­li można skie­ro­wać plik do tej bazy:
1
mysql -u operator -p sklep_proba < sklep-kopia.sql
W phpMyAdmin wy­bie­ra się bazę sklep_proba i używa im­por­tu pliku SQL. Po ope­ra­cji od­czy­taj ko­mu­ni­ka­ty, a nie tylko kolor paska po­stę­pu. Zwe­ry­fi­kuj listę tabel, de­fi­ni­cje kolumn, liczbę re­kor­dów i kilka zna­nych war­to­ści. Jeżeli źródło miało pięć pro­duk­tów, to pięć pro­duk­tów po im­por­cie jest jednym z do­wo­dów, lecz nie do­wo­dzi jesz­cze zgod­no­ści wszyst­kich re­la­cji i kwot.
Dobra próba od­two­rze­nia spraw­dza także dzia­ła­nie apli­ka­cji na danych te­sto­wych. Czy lista po­ka­zu­je wła­ści­we nazwy, czy za­mó­wie­nie wska­zu­je ist­nie­ją­ce­go klien­ta, czy znaki pol­skie są po­praw­ne? Kon­tro­la sumy kon­tro­l­nej pliku wy­kry­wa zmianę pliku po jego utwo­rze­niu, ale nie do­wo­dzi, że eks­port od po­cząt­ku obej­mo­wał wszyst­ko. Kon­tro­la pliku i kon­tro­la od­two­rzo­nej bazy uzu­peł­nia­ją się.

Spój­ność i dia­gno­za

Spój­ność bazy ozna­cza zgod­ność danych z przy­ję­ty­mi re­gu­ła­mi. Klucz obcy może za­bro­nić za­mó­wie­nia wska­zu­ją­ce­go nie­ist­nie­ją­ce­go klien­ta. Ogra­ni­cze­nie uni­kal­no­ści może za­bro­nić po­wtó­rze­nia iden­ty­fi­ka­to­ra. Reguły biz­ne­so­we, na przy­kład do­dat­nia liczba sztuk, także wy­ma­ga­ją spraw­dze­nia. Me­cha­ni­zmy struk­tu­ral­ne opi­su­ją lekcje o bazach.
Nie­pra­wi­dło­we po­łą­cze­nie, błędne za­py­ta­nie i uszko­dzo­na tabela to różne dia­gno­zy. Naj­pierw zapisz ko­mu­ni­kat oraz oko­licz­no­ści. Sprawdź, czy działa usługa, czy konto może się po­łą­czyć, czy ist­nie­je baza i czy proste za­py­ta­nie działa. Potem po­rów­naj struk­tu­rę z ocze­ki­wa­nym sche­ma­tem i sprawdź dzien­nik błędów ser­we­ra. Brak do­stę­pu nie jest do­wo­dem uszko­dze­nia plików.
CHECK TABLE (SPRAWDŹ TABELĘ) jest po­le­ce­niem dia­gno­stycz­nym, któ­re­go zakres zależy od sil­ni­ka. Nie do­wo­dzi po­praw­no­ści wszyst­kich reguł biz­ne­so­wych. Przed czyn­no­ścia­mi na­praw­czy­mi za­bez­pie­cza się do­stęp­ne dane oraz kopie i ustala przy­czy­nę awarii. Dalsze zapisy na uszko­dzo­nym śro­do­wi­sku mogą utrud­nić od­zy­ska­nie in­for­ma­cji.
REPAIR TABLE (NAPRAW TABELĘ) nie jest uni­wer­sal­nym po­le­ce­niem od­twa­rza­ją­cym dane. Nie ob­słu­gu­je na­pra­wy tabel InnoDB. Dla nich ko­rzy­sta się z me­cha­ni­zmów od­twa­rza­nia sil­ni­ka, spraw­dzo­nych kopii i pro­ce­du­ry do­bra­nej do ko­mu­ni­ka­tu oraz wersji. Ogra­ni­cze­nia podaje do­ku­men­ta­cja REPAIR TABLE. Nie uru­cha­mia się lo­so­wych po­le­ceń na­praw­czych tylko dla­te­go, że panel nazywa przy­cisk „Napraw”.

Na eg­za­mi­nie

Gdy po­le­ce­nie wymaga kopii struk­tu­ry, sprawdź obec­ność de­fi­ni­cji i brak re­kor­dów. Gdy wymaga peł­ne­go eks­por­tu, po­trzeb­ne są de­fi­ni­cje i dane. Przy im­por­cie po­je­dyn­czej tabeli wy­bierz wła­ści­wy zakres, format oraz bazę do­ce­lo­wą. Po od­two­rze­niu przy­go­tuj dowód wyniku, a nie wy­łącz­nie zrzut okna wyboru pliku.
Pu­łap­ka: nie­pu­sty plik SQL nie do­wo­dzi po­praw­no­ści kopii. Od­two­rze­nie w od­dziel­nej bazie i kon­tro­la wy­ni­ków spraw­dza­ją, czy można z niego rze­czy­wi­ście sko­rzy­stać.
W py­ta­niu o na­pra­wę zwróć uwagę na silnik i rodzaj błędu. Nie usuwaj bazy, aby spraw­dzić, czy kopia działa. Próba w od­dziel­nym miej­scu po­zwa­la za­cho­wać ory­gi­nał i po­rów­nać re­zul­tat.

Ściąga

Czyn­ność
Kon­tro­la
kopia struk­tu­ry
de­fi­ni­cje bez re­kor­dów
pełny eks­port SQL
po­trzeb­ne de­fi­ni­cje i dane
eks­port jednej tabeli
za­zna­czo­ny wła­ści­wy zakres
--single-trans­ac­tion
spójny odczyt InnoDB, bez zmian struk­tu­ry
przy­wró­ce­nie próbne
od­dziel­na baza, kon­tro­la in­struk­cji USE i DROP
we­ry­fi­ka­cja
struk­tu­ra, liczby, war­to­ści, re­la­cje i apli­ka­cja
CHECK TABLE
dia­gno­sty­ka za­leż­na od sil­ni­ka
REPAIR TABLE
nie na­pra­wia InnoDB
Pobierz ściągę PDF
ZAWODNIK
egzamin zawodowy INF.02 · INF.03 · INF.04
Serwer Discord›
Egzaminy zawodowe IT/Matury/Studia
@yastor
© 2026 Zawodnik · by Yastor
Arkusze i zasady oceniania pochodzą z CKE. Serwis nie jest powiązany z Centralną Komisją Egzaminacyjną.