
blkmrkt
14.12.2016
19:30:51
там после номера страницы за запятой идет еще цифра

Петр
14.12.2016
19:31:25
Ну тысяча твоих строк вряд ли поместятся в страницу

blkmrkt
14.12.2016
19:31:44
ааа, цифра это номер строки просто?

Петр
14.12.2016
19:32:27
На сколько помню, это версия

Google

blkmrkt
14.12.2016
19:32:45
select ctid, * from comments where ctid = '(92804,51)';
вот это максимальная строка которую вручную подобрал, она читается
а как селектнуть все записи из страницы?

Петр
14.12.2016
19:33:04
Надо доку читать, не хочу наврать, но если ты в страницу только записывал, то с большой вероятностью там строки
dd сколько в среднем строк показывало? Вот проверь чуть больше

blkmrkt
14.12.2016
19:41:21
вот такую квери запустил: select ctid, * from comments where (ctid::text::point)[0]::bigint = 92804;
оно видимо полным перебором идет

Петр
14.12.2016
19:48:00
Когда получишь результат и 92804 окажется исправной, проверь чисткой 92805 испортит это 92804 или нет. А то по последовательности твоих чисток складывается ощущение, что там еще предыдущая страница захватывается

blkmrkt
14.12.2016
19:49:28
омг

Петр
14.12.2016
19:49:53
Посмотри dd, сравни до и после чистки предыдущей
Может там чуток конец затирается, придется сдвинуть затирку

blkmrkt
14.12.2016
19:50:30
я последнюю чистку такой командой делал:
dd if=/dev/zero of=/var/lib/postgresql/9.5/main/base/16385/16443 bs=8192 seek=92806 count=1 conv=notrunc

Петр
14.12.2016
19:51:41
Затри 92805 только сперва сохрани 92804

Google

blkmrkt
14.12.2016
19:51:53
а ок
а это норма что у меня файл 16443 состоит из 111 частей сорта 16443.1 16443.2 ...?

Петр
14.12.2016
19:54:35
У нас и из тысяч есть

blkmrkt
14.12.2016
19:55:06
только почему-то мы теребим с dd основной файл, а не его куски

Darafei
14.12.2016
19:55:15
это всё один файл

blkmrkt
14.12.2016
19:55:21
это фишка линукса?

Петр
14.12.2016
19:55:39
Потому что страница у тебя из первого файла

Darafei
14.12.2016
19:55:47
он просто порезан на кусочки, чтобы fat32 и другие файловые системы могли с ним работать
это фишка постгреса

Петр
14.12.2016
19:56:00
1гб файл, страницы по 8кб

blkmrkt
14.12.2016
19:56:25

Quet
14.12.2016
19:58:49
канал последние пару недель прям иллюстрация пользы бэкапов

Darafei
14.12.2016
19:58:56
возможно, они во всех, просто на первом уже начались :)

Петр
14.12.2016
19:59:30
Обычно не во всех))

blkmrkt
14.12.2016
19:59:57

Петр
14.12.2016
20:01:43
Бэкапить тоже не всегда получается, когда базы очень большие. Приходится другими методами обеспечивать надежность
Ну так как? Затерлась предыдущая страница?

Quet
14.12.2016
20:02:42
это насколько большие?

blkmrkt
14.12.2016
20:02:50

Quet
14.12.2016
20:02:54
мне кажется этот случай не такой )

Google

blkmrkt
14.12.2016
20:03:14

Петр
14.12.2016
20:03:36

blkmrkt
14.12.2016
20:03:41
сейчас следующаю попробую

Петр
14.12.2016
20:05:05
Петабайт

Quet
14.12.2016
20:05:28
если у вас пб база то есть парочка своих датацентров )
куда и бэкапить

blkmrkt
14.12.2016
20:06:04
таак, вот теперь 92804 не читается. делаю бекап 92803 и обнуляю 92804?

Петр
14.12.2016
20:07:19
Это немного, пара стоек
Ты сохранил до этого 92804?
Ведь до этого он читался у тебя

Петр
14.12.2016
20:08:15
Она испортилась

blkmrkt
14.12.2016
20:08:18
угу

Аггей
14.12.2016
20:08:20

Петр
14.12.2016
20:08:46
Посмотри теперь чем отличается, на сколько сдвинуть может затирку
То ли не помню

blkmrkt
14.12.2016
20:09:20

Google

Аггей
14.12.2016
20:09:23
Не первый файл был?

blkmrkt
14.12.2016
20:09:35
dd if=/dev/zero of=/var/lib/postgresql/9.5/main/base/16385/16443 bs=8192 seek=92805 count=1 conv=notrunc

Аггей
14.12.2016
20:09:53
У вас то да, а у Петра.

Петр
14.12.2016
20:10:01
Первый

blkmrkt
14.12.2016
20:10:11

Петр
14.12.2016
20:11:01
Тогда надо разобраться со смещением и вернуть правильный файл и начинать сначала (надеюсь ты сделал копию)

Аггей
14.12.2016
20:11:03
Можно сравнить для 2х разных таблиц первые файлы - на предмет схожести

blkmrkt
14.12.2016
20:11:28

Admin
ERROR: S client not available

Аггей
14.12.2016
20:11:37
Хотя бы первых пару десятков килобайт

Петр
14.12.2016
20:11:49
Я просил тебя сохранить страницу 92804

Аггей
14.12.2016
20:11:52

Петр
14.12.2016
20:12:06
Сравни с тем , что сейчас там

blkmrkt
14.12.2016
20:12:11

Петр
14.12.2016
20:12:20
Возможно конец затёрт нулями

blkmrkt
14.12.2016
20:13:59
но я ж бегаю по файлу и обнуляю его средствами dd seek, он ведь покажет кусок 92804 в с тем же неправильным смещением, если оно неправильно

Петр
14.12.2016
20:15:59
Ты затираешь по 8192, вот сравни их до и после
Ну или попробуй прочитать самое начало файла, посмотри, что там, может будет понятно что к чему
Мне лень комп включать, да и с телефона писать не очень

blkmrkt
14.12.2016
20:17:32
a ok

Google

Аггей
14.12.2016
20:19:28
Если допустить, что смещение 8k?
То стирался предыдущий блок
Я для примера поглядел несколько файлов - у всех первые 8к выглядят одинаково
В первом файле
В остальных файлах *.1 *.2 и тп - первый блок различается

Quet
14.12.2016
20:23:41
вы прям как будто какой оракл реверс инженерите
есть же исходники

Аггей
14.12.2016
20:24:04
Соответственно первый блок первого файла таблицы под данные не пользуется

blkmrkt
14.12.2016
20:24:11

Аггей
14.12.2016
20:24:38
На больших проектах - та еще задача

blkmrkt
14.12.2016
20:24:54
я обнулил страницы:
92816
92814
92813
92812
92811
92812
92810
92809
92808
92807
92806
92805
но почему-то 92804 из-за этого захерилась

Quet
14.12.2016
20:25:22
ну без заглядывания в исходники это все выглядит как карго-культ
случайным образом делаются случайные действия а данные почему-то не восстанавливаются

blkmrkt
14.12.2016
20:26:06

Петр
14.12.2016
20:26:23
вроде нормально заканчивается
а до обнуления есть?

blkmrkt
14.12.2016
20:26:39

Аггей
14.12.2016
20:26:43

Quet
14.12.2016
20:28:49
@blkmrkt , напиши хоть блог пост об этом всем
чтобы что-то полезное для людей было )

blkmrkt
14.12.2016
20:29:25

Петр
14.12.2016
20:29:30
попробуй сместить, как Аггей говорит

Quet
14.12.2016
20:30:27
@blkmrkt , ?