Nic nie możesz naprawdę zrobić, ponieważ wycofywanie odbywa się za pomocą obszaru tabel UNDO w ibdata1 , który powinien ogromnie wzrosnąć.
Jeśli zabijesz proces mysqld i zrestartujesz mysql, po prostu przejdzie tam, gdzie zostało przerwane, w ramach cyklu odzyskiwania po awarii.
ZASTRZEŻENIE: Nie ponosi odpowiedzialności za utratę danych
To, co możesz zrobić, może spowodować utratę danych dla innych tabel, ale jest coś, co możesz zrobić, aby obejść normalny cykl odzyskiwania po awarii InnoDB.
Dostępna jest opcja uruchamiania o nazwie innodb_force_recovery , która pozwala ominąć różne etapy odzyskiwania po awarii programu InnoDB.
Zgodnie z dokumentacją MySQL na temat wymuszania odzyskiwania InnoDB , oto ustawienia i ich efekty:
1 (SRV_FORCE_IGNORE_CORRUPT)
Pozwól serwerowi działać, nawet jeśli wykryje uszkodzoną stronę. Spróbuj sprawić, aby SELECT * FROM tbl_name przeskakiwał uszkodzone rekordy indeksu i strony, co pomaga w zrzucaniu tabel.
2 (SRV_FORCE_NO_BACKGROUND)
Zapobiegaj uruchomieniu głównego wątku. Jeśli awaria wystąpi podczas operacji czyszczenia, ta wartość odzyskiwania zapobiega temu.
3 (SRV_FORCE_NO_TRX_UNDO)
Nie uruchamiaj wycofywania transakcji po przywróceniu po awarii.
4 (SRV_FORCE_NO_IBUF_MERGE)
Zapobiegaj operacjom scalania bufora wstawiania. Jeśli spowodują awarię, nie rób ich. Nie obliczaj statystyk tabeli.
5 (SRV_FORCE_NO_UNDO_LOG_SCAN)
Nie patrz na dzienniki cofania podczas uruchamiania bazy danych: InnoDB traktuje nawet niekompletne transakcje jako zatwierdzone.
6 (SRV_FORCE_NO_LOG_REDO)
Nie należy powtarzać dziennika przewijania w związku z odzyskiwaniem.
Przy zmianach transakcyjnych ukrytych w dziennikach UNDO i REDO ryzykujesz
- utrata danych przeznaczonych do zapisu
- przechowywanie danych przeznaczonych do usunięcia
Jeśli oczekujesz złych efektów ubocznych, wykonaj kopię zapasową całego pliku / var / lib / mysql i umieść go gdzieś na wypadek, gdybyś chciał skopiować ibdata1, ib_logfile0 i ib_logfile1 i ponów normalne odzyskiwanie.
Jeśli mysql jest w pełni włączony w jednym z trybów
- mysqldump wszystkie dane oprócz tabeli obrażeń
- zamknij mysql
- usuń wszystko z / var / lib / mysql oprócz / var / lib / mysql / mysql
- uruchom mysql
- ponownie załaduj mysqldump
UWAGA: Upewnij się, że wykonałeś kopię zapasową wszystkiego !!!
Mam nadzieję, że to pomoże !!!