Skocz do zawartości
Zaloguj się, aby obserwować  
BlueMan

problem z tabelami innodb z innego serwera

Polecane posty

Przy przenoszeniu się na inny serwer po prostu zgrywałem bazy z /var/lib/mysql na nowy serwer i wszystko działało prawidłowo po ustawieniu uprawnień przeniesionym plikom.

 

Teraz niestety nie zadziałało :/ problem występuje tylko z tabelami innodb. myisam prawidłowo się pojawił.

 

phpmyadmin nie wyświetla tabel innodb.

Samo innodb działa prawidłowo, ponieważ nowa baza z taką tabelą prawidłowo się wyświetla.

 

SHOW ENGINES;

Engine 	Support 	Comment 	Transactions 	XA 	Savepoints
InnoDB 	DEFAULT 	Supports transactions, row-level locking, and fore... 	YES 	YES 	YES
MRG_MYISAM 	YES 	Collection of identical MyISAM tables 	NO 	NO 	NO
BLACKHOLE 	YES 	/dev/null storage engine (anything you write to it... 	NO 	NO 	NO
CSV 	YES 	CSV storage engine 	NO 	NO 	NO
MEMORY 	YES 	Hash based, stored in memory, useful for temporary... 	NO 	NO 	NO
FEDERATED 	NO 	Federated MySQL storage engine 	NULL 	NULL 	NULL
ARCHIVE 	YES 	Archive storage engine 	NO 	NO 	NO
MyISAM 	YES 	Default engine as of MySQL 3.23 with great perform... 	NO 	NO 	NO

 

/var/log/mysql/error.log nie mówi nic interesującego

110219 16:35:58 [Note] Plugin 'FEDERATED' is disabled.
110219 16:35:58  InnoDB: Started; log sequence number 0 48339
110219 16:35:58 [Note] Event Scheduler: Loaded 0 events
110219 16:35:58 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.1.49-1ubuntu8.1'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu)
110219 16:35:59 [ERROR] Cannot find or open table cypissc_cars/cars from
the internal data dictionary of InnoDB though the .frm file for the
table exists. Maybe you have deleted and recreated InnoDB data
files but have forgotten to delete the corresponding .frm files
of InnoDB tables, or you have moved .frm files to another database?
or, the table contains indexes that this version of the engine
doesn't support.
See http://dev.mysql.com/doc/refman/5.1/en/innodb-troubleshooting.html
how you can resolve the problem.

[...]

 

Jak wyłączę obsługę InnoDb (skip-innodb), to phpmyadmin wyświetli wszystkie tabele, ale mają one status "w użyciu" i nic nie można z nimi zrobić. Naprawa/Analiza/Optymalizacja kończy się błędem informującym o braku wsparcia dla innodb

 

Co może być przyczyną tego problemu?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Tabele InnoDB powinny być przenoszone dumpują ich zawartośc i tworząc na nowym serwerze co było niejednokrotnie pisane na tym forum jak ktoś radził, że najlepszy backup to przegranie plików mysql-a.

 

Dlatego powinieneś zrzucić zawartość tych table i dopiero przeneść na nowy serwer.

Edytowano przez regdos (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość squeezer

Podstawowe pytanie jest takie, czy przegrywałeś także zawartość tablespace InnoDB (czyli zawartość katalogu wskazanego przez show variables like 'innodb_data_home_dir'; )

 

Nie zgodzę się z tym, że log błędów nie mówi nic ciekawego. Wręcz przeciwnie. Wynika z niego, że co prawda tabela `cars` istnieje w postaci pliku cars.frm, to jednak w tablespace nie ma danych dotyczących tej tabeli. Przyczyny mogą być różne. Najczęstsza to właśnie to, że przegrane zostały tylko katalogi z bazami, podczas gdy pliki współdzielonego tablespace przegrywane nie były. Zwróć uwagę, że InnoDB przechowuje informacje o tabelach we współdzielonym tablespace nawet wtedy, gdy masz ustawione innodb_file_per_table=1. Nie wystarczy przegrać pliki *.frm i *.ibd.

 

Inną przyczyną może być to, że tablespace zostało w jakiś sposób uszkodzone, w każdym razie coś zaszkodziło tym danym.

 

Jeśli jesteś pewny, że wszystko przegrałeś jak należy, to możesz próbować z różnymi wariantami na temat innodb_force_recovery - może uda się jakoś odzyskać te dane. Najprościej jednak będzie zaorać do zera obecny serwer MySQL (a przynajmniej przenoszone bazy) i zrobić wszystko jeszcze raz. Dumpem, bo to jest rozwiązanie najłatwiejsze do wykonania.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrys

Samo przeniesienie jest w 100% skuteczne gdy bazy są przenoszone na odłączonym serwerze MySQL i oba serwery mają tą sama wersje MySQL, tak było ?

Jeżeli oba serwery mają tę samą wersje to wyłącz MySQL na serwerze z bazami, usuń wszystko z serwera docelowego i daj 'rsync -ax'.

 

Jeżeli nie można tego wykonać to zostaje usunięcie błędnych tabel innodb i dump/restore.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×