Czasem się może zdarzyć, że podczas operacji (zapisu) w bazie danych coś pójdzie nie tak – nie zdarza się to może zbyt często (a przynajmniej nie powinno), ale zawsze może się zdarzyć – teoretycznie wystarczy awaria serwera, jakaś usterka dysku/systemu plików (lub np. brak miejsca na serwerze z bazą danych), błąd po stronie skryptu, czy po prostu pech…

Taka sytuacja oczywiście może mieć też miejsce w przypadku WordPressa, ale tu możemy posłużyć się wbudowanym narzędziem do naprawy (i optymalizacji) bazy danych, które wprawdzie/zapewne nie naprawi jakiś bardziej poważnych awarii (i nie zastąpi regularnych kopii zapasowych), to czasem w zupełności wystarczy, o czym mógł wczoraj przekonać się mój znajomy, któremu w ten sposób w kilkanaście sekund (dosłownie!) podniosłem stronę po nieudanej aktualizacji.

WordPress i wbudowana naprawa bazy danych

Chyba gdzieś od wersji 3.9 w WordPressie pojawiło się narzędzie do naprawy i optymalizacji bazy danych – nawet jeśli do tej pory nie mieliście okazji z niego korzystać, to być może kojarzycie coś podobnego, gdy po aktualizacji WordPressa do nowej wersji pojawia Wam się ekran z prośbą o aktualizacje bazy danych.

Narzędzie (plik PHP) znajduje się w katalogu:

/wp-admin/maint/repair.php

Natomiast próba wywołania/uruchomienia tego pliku w standardowej konfiguracji WordPressa powinna zakończyć się takim ekranem:

Aby możliwe było użycie skryptu do naprawy problemów w bazie danych na tej stronie, proszę dodać poniższy wiersz do pliku wp-config.php. Kiedy to zrobisz, odśwież tę stronę.

Jest to działanie jak najbardziej poprawne, i jak można przeczytać na powyższym komunikacie – najpierw musimy do pliku konfiguracyjnego WordPressa (wp-config.php) dodać jedną linijkę:

define('WP_ALLOW_REPAIR', true);

Ja zazwyczaj dodatkowe wpisy do tego pliku dodaje tuż nad linijką:

/* That's all, stop editing! Happy blogging. */

Po tej modyfikacji wystarczy wejść na stronę:

[adres_naszej_strony]/wp-admin/maint/repair.php

Np. w przypadku strony Webinsider.pl będzie to:

https://Webinsider.pl/wp-admin/maint/repair.php

W tym momencie pojawią się 2 opcje do wyboru – naprawa, lub naprawa i optymalizacja:

Naprawa:

WordPress może automatycznie wyszukać typowe problemy z bazą danych i naprawić je. Naprawa może chwilę potrwać więc prosimy o cierpliwość.

Naprawa i optymalizacja:

WordPress może także zoptymalizować bazę danych. Skutkuje to poprawą wydajność w niektórych sytuacjach. Naprawa i optymalizacja bazy danych może zająć dużo czasu, a dostęp do bazy zostanie zablokowany na czas optymalizacji.

Pamiętajcie by wcześniej zrobić kopie zapasową bazy danych – nawet jeśli jest to naprawa uszkodzonej bazy, to zawsze może pójść coś nie tak, i uszkodzenia mogą być jeszcze większe.

W większości przypadków nie ma znaczenia która opcję wybierzecie, cała operacja powinna potrwać maksymalnie kilka-kilkanaście sekund:

Naprawa została ukończona. Proszę usunąć następujące linijki z pliku wp.config.php, aby zapobiec użyciu tej strony przez nieupoważnione osoby.

Po tej operacji jest spora szansa, że Wasza strona ponownie zacznie działać prawidłowo, choć jak napisałem na wstępie – jest to naprawa automatyczna, a więc naprawi tylko drobniejsze (bardziej oczywiste) usterki, głównie wynikające z uszkodzenia samej struktury bazy, czy też błędnego jej oznaczenia jako np. w użyciu, i w niektórych przypadkach niezbędne mogą być dalsze prace, w tym przywrócenie bazy z kopii zapasowej.

Na koniec pamiętajcie by usunąć dodaną wcześniej do pliku wp-config.php linijkę, lub przynajmniej zakomentować ją, dodając na początku znak #:

#define('WP_ALLOW_REPAIR', true);

Inne systemy, inne CMSy

Oczywiście jest to procedura dostępna w sytuacji gdy korzystamy z WordPressa. Inne skrypty czy CMSy mogą mieć własne wbudowane rozwiązania, bądź nie mieć ich w cale – ale tu odsyłam Was do dokumentacji, w której powinniście mieć tego typu informacje.

Uniwersalna naprawa bazy danych MySQL

Mogę chyba też zaryzykować, że jest duża szansa, że korzystacie z bazy danych MySQL – w takim przypadku możecie podobny efekt jaki daje wbudowane w WordPressa narzędzie uzyskać pracując bezpośrednio z bazą danych.

Jeśli korzystacie z VPSa (np. w HitMe, DigitalOcean czy e24cloud) to możecie spróbować naprawić bazę danych bezpośrednio z konsoli za pomocą polecenia:

mysqlcheck -u UŻYTKOWNIK --password=HASLO --auto-repair --check --databases nazwa_bazy_danych

Np.:

mysqlcheck -u root --password=WebinsiderPL --auto-repair --check --databases webinsider01

Możecie też naprawić wszystkie bazy na danym serwerze, nawet jeśli rzadko kiedy jest taka potrzeba, to warto wiedzieć, że i taka możliwość istnieje:

mysqlcheck -u UŻYTKOWNIK --password=HASLO --auto-repair --check --databases nazwa_bazy_danych --all-databases

phpMyAdmin

Jeśli macie dostęp do phpMyAdmin (standard w przypadku hostingów współdzielonych, np. Kylos.pl) to po zalogowaniu się do phpMyAdmin możecie spróbować naprawić wybrane/wszystkie tabele w bazie danych bezpośrednio z menu:

Lub skorzystać z polecenia SQL:

REPAIR TABLE nazwa_tabeli

Np.:

REPAIR TABLE `wp_commentmeta` , `wp_comments` , `wp_postmeta` , `wp_posts`

Kopia zapasowa to podstawa

Wiem, że już o tym pisałem, i to nawet w tym wpisie, ale jeśli chodzi o kopie zapasowe będę powtarzał to do znudzenia – pamiętajcie by je robić, i testować, bo nie raz zdarzyło mi się pomagać w sytuacji, gdy kopie zapasowe niby były wykonywane, ale nikt wcześniej nie sprawdził, czy wykonują się one poprawnie, i czy da się coś z nimi zrobić (przynajmniej bez kombinowania, bo w przypadku awarii zazwyczaj na to już nie ma czasu).

(!) Zgłoś błąd na stronie
Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!

Spodobał Ci się artykuł? Zapisz się do naszego Newslettera - ZERO SPAMu, same konkrety, oraz dostęp do dodatkowych materiałów przeznaczonych dla subskrybentów!

Na podany adres e-mail otrzymasz od nas wiadomość e-mail, w której znajdziesz link do potwierdzenia subskrypcji naszego Newslettera. Dzięki temu mamy pewność, że nikt nie dodał Twojego adresu przez przypadek. Jeśli wiadomość nie przyjdzie w ciągu najbliższej godziny (zazwyczaj jest to maksymalnie kilka minut) sprawdź folder SPAM.

Patryk

CEO Webinsider.pl, a do tego CTO, CIO, CFO, CMO, CSO, COO i CRO ;-)
Pasjonat nowych technologii - od sprzętu po oprogramowanie, od serwerów po smartfony i rozwiązania IoT. Potencjalnie kiepski bloger, bo nie robi zdjęć "talerza" zanim zacznie jeść.

Dumny przyjaciel swoich psów :-)
Envato Elements - pobierasz co chcesz, ile chcesz