czwartek, 4 lutego 2010

PostgreSQL - problemy z TOAST

Natrafiłem ostatnio na problem przy wykonywaniu kopii bazy danych. Problem objawiał się takim komunikatem:
pg_dump: dumping contents of table tabela_dane
pg_dump: ERROR:  unexpected chunk number 65 (expected 63) for toast value 12313674
pg_dump: lost synchronization with server, resetting connection
pg_dump: SQL command to dump the contents of table "tabela_dane" failed: PQendcopy() failed.

Oto pomocne zapytania SQL, które pomogły w dokładniejszej identyfikacji problemu:

select relname from pg_class where oid = (select reltoastrelid from pg_class where relname ='tbela_dane');
select chunk_seq,length(chunk_data) from pg_toast.pg_toast_NNNNN where chunk_id = 12313674
Na szczęście tej bazie (ponad 50GB), znajdował się jeden uszkodzony wiersz i w w nim kolumna (w powiązanej z tablą tabeli TOAST) . Usunięcie danych z tej kolumny i przywrócenie ich z backup-u rozwiązało problem.

Brak komentarzy: