Size: a a a

pgsql – PostgreSQL

2020 July 09

SG

Sergey Gr in pgsql – PostgreSQL
Igor
Всем привет! как можно поправить базу, если сломались оффсеты?
Была ошибка вида "ERROR: missing chunk number 0 for toast value 123456 in pg_toast_45678". Решил исправлять базу по вот этому мануалу: https://gist.github.com/supix/80f9a6111dc954cf38ee99b9dedf187a

Но прикол в том, что строка вида select * from mytable order by id limit 1 offset 11963; всегда падает с той же самой ошибкой на одном и том же оффсете.
А удалять эту строку пытался?
источник

GS

Grigory Smolkin in pgsql – PostgreSQL
Igor
Всем привет! как можно поправить базу, если сломались оффсеты?
Была ошибка вида "ERROR: missing chunk number 0 for toast value 123456 in pg_toast_45678". Решил исправлять базу по вот этому мануалу: https://gist.github.com/supix/80f9a6111dc954cf38ee99b9dedf187a

Но прикол в том, что строка вида select * from mytable order by id limit 1 offset 11963; всегда падает с той же самой ошибкой на одном и том же оффсете.
бэкапов и реплики нет?
источник

I

Igor in pgsql – PostgreSQL
Бэкапов и реплики нет
источник

I

Igor in pgsql – PostgreSQL
Sergey Gr
А удалять эту строку пытался?
Ага
источник

I

Igor in pgsql – PostgreSQL
И с реиндексом после удаления, и без реиндекса всё равно по этому оффсету битая строка.
источник

SG

Sergey Gr in pgsql – PostgreSQL
А create table as select проходит?
источник

I

Igor in pgsql – PostgreSQL
Не пробовал
источник

I

Igor in pgsql – PostgreSQL
Там хитрее проблема ещё есть. Один и тот же селект иногда проходит, иногда падает
источник

SG

Sergey Gr in pgsql – PostgreSQL
Вроде тоже не должен
источник

SG

Sergey Gr in pgsql – PostgreSQL
А какой глобальный план?
источник

I

Igor in pgsql – PostgreSQL
Ну точнее, я сначала сканировал таблицу кусками по 10000 строк - нашлось 6 битых кусков. Потом начал битые куски проверять окном по 100 строк... И все блоки на этот раз оказались валидными
источник

GS

Grigory Smolkin in pgsql – PostgreSQL
Igor
Всем привет! как можно поправить базу, если сломались оффсеты?
Была ошибка вида "ERROR: missing chunk number 0 for toast value 123456 in pg_toast_45678". Решил исправлять базу по вот этому мануалу: https://gist.github.com/supix/80f9a6111dc954cf38ee99b9dedf187a

Но прикол в том, что строка вида select * from mytable order by id limit 1 offset 11963; всегда падает с той же самой ошибкой на одном и том же оффсете.
вам нужно остановить активность в базе, попробовать сделать дамп и, если удастся, восстановить его в новом инстансе
источник

I

Igor in pgsql – PostgreSQL
А если не удастся сделать дамп?
источник

GS

Grigory Smolkin in pgsql – PostgreSQL
текущий инстанс очевидно битый
источник

GS

Grigory Smolkin in pgsql – PostgreSQL
Igor
А если не удастся сделать дамп?
разбираться с возникающими проблемами
источник

ПЕ

Петр Егоров... in pgsql – PostgreSQL
построчно переберите все записи
те строчки, что упали, удалить их
если не поможет, создайте новую таблицу и перелейте живые записи в нее
источник

I

Igor in pgsql – PostgreSQL
Попробовал сдампить - та же ошибка:
pg_dump: Dumping the contents of table "access_control" failed: PQgetResult() failed.
pg_dump: Error message from server: ERROR:  missing chunk number 0 for toast value 13118243 in pg_toast_16516
pg_dump: The command was: COPY public.access_control (id, created_on, foo, bar) TO stdout;
источник

Ð

Ð in pgsql – PostgreSQL
Valeriu Vodnicear
Какие есть инструменты для администрирования бд?
psql + bash/zsh
источник

GS

Grigory Smolkin in pgsql – PostgreSQL
Igor
Попробовал сдампить - та же ошибка:
pg_dump: Dumping the contents of table "access_control" failed: PQgetResult() failed.
pg_dump: Error message from server: ERROR:  missing chunk number 0 for toast value 13118243 in pg_toast_16516
pg_dump: The command was: COPY public.access_control (id, created_on, foo, bar) TO stdout;
значит нужно выпилить туплы, у которых сломался тост
источник

GS

Grigory Smolkin in pgsql – PostgreSQL
источник