Обсуждение: VACUUM to prevent wraparound

Поиск
Список
Период
Сортировка

VACUUM to prevent wraparound

От
"Dmitry E. Oboukhov"
Дата:
Одна БД (9.5) пришла в положение: автовакуум постоянно запускает запрос:

autovacuum: VACUUM public.orders (to prevent wraparound)

и тот всегда висит "to prevent wraparound"

любые попытки ALTER TABLE зависают навсегда. Попытки завершаются
успехом при остановке pg_cancel_backend этого "to prevent wraparound".

В доке пишут подымите мол autovacuum_freeze_max_age, но я что-то не
пойму как его правильно поднять.

psql
psql (9.5.11)
Введите "help", чтобы получить справку.

unera=# show autovacuum_freeze_max_age;
 autovacuum_freeze_max_age
---------------------------
 200000000
(1 строка)

unera=# ALTER SYSTEM SET autovacuum_freeze_max_age = 1000000000;
ALTER SYSTEM
unera=# show autovacuum_freeze_max_age;
 autovacuum_freeze_max_age
---------------------------
 200000000
(1 строка)

unera=# SELECT pg_reload_conf();
 pg_reload_conf
----------------
 t
(1 строка)

unera=# show autovacuum_freeze_max_age;
 autovacuum_freeze_max_age
---------------------------
 200000000
(1 строка)

unera=# show autovacuum;
 autovacuum
------------
 off
(1 строка)

Остановка autovacuum тоже не помогла. Как только киляешь этот запрос -
он сразу запускает новый. И новый в этом состоянии `prevent` и все. Дальше
с БД сделать ничего нельзя.
Не хочется ее выключать. Можно что-то сделать без простоя?


--

. ''`.            Dmitry E. Oboukhov <unera@debian.org>
: :’  :
`. `~’               GPG key: 4096R/08EEA756 2014-08-30
  `- 71ED ACFC 6801 0DD9 1AD1  9B86 8D1F 969A 08EE A756

Вложения

Re: VACUUM to prevent wraparound

От
Sergei Kornilov
Дата:
Привет
Если вы будете мешать работать antiwraparound автовакууму - у вас через некоторое обозримое время встанет вообще вся
базаи потребует плотного общения с DBA вроде вот такого:
 
> ERROR:  database is not accepting commands to avoid wraparound data loss in database "mydb"
> HINT:  Stop the postmaster and vacuum that database in single-user mode.
https://www.postgresql.org/docs/current/static/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND
Потому что иначе при wraparound сделать больше ничего нельзя.

Ждите когда wraparound завершится либо выполните vacuum freeze самостоятельно.

И включите обратно autovacuum. Он выполняет много полезной работы. Если вы думаете что он мешает - значит у вас
недостаточноагрессивно настроен автовакуум.
 

С уважением, Сергей


Re: VACUUM to prevent wraparound

От
"Dmitry E. Oboukhov"
Дата:
> Привет
> Если вы будете мешать работать antiwraparound автовакууму - у вас через некоторое обозримое время встанет вообще вся
базаи потребует плотного общения с DBA вроде вот такого: 
>> ERROR:  database is not accepting commands to avoid wraparound data loss in database "mydb"
>> HINT:  Stop the postmaster and vacuum that database in single-user mode.
> https://www.postgresql.org/docs/current/static/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND


в общем приблизительно я разобрался что произошло.

видимо бага которую закрывали в 9.5.6-1 и о которую мы в свое время
нос разбили еще таки есть.

я запустил руками VACUUM ANALYZE VERBOSE orders;

затем стопнул prevent-запрос и увидел что VACUUM не может пройти
поскольку один из индексов фелится vacuum

ERROR:  failed to re-find parent key in index "orders_from_fullname_idx" for deletion target page 163383

я дропнул и пересоздал этот индекс и далее снова пустил

VACUUM ANALYZE VERBOSE orders;

этот VACUUM еще идет, но судя по всему минут через 15 завершится.

а дальше будем смотреть, надеюсь что и prevent исчезнет


> Потому что иначе при wraparound сделать больше ничего нельзя.

> Ждите когда wraparound завершится либо выполните vacuum freeze самостоятельно.

> И включите обратно autovacuum. Он выполняет много полезной работы. Если вы думаете что он мешает - значит у вас
недостаточноагрессивно настроен автовакуум. 

да это понятно. Я его выключил в рамках попытки разобраться что было.

> С уважением, Сергей
--

. ''`.            Dmitry E. Oboukhov <unera@debian.org>
: :’  :
`. `~’               GPG key: 4096R/08EEA756 2014-08-30
  `- 71ED ACFC 6801 0DD9 1AD1  9B86 8D1F 969A 08EE A756

Вложения

Re: VACUUM to prevent wraparound

От
"Dmitry E. Oboukhov"
Дата:
Да, действительно, проблема была именно в corrupt индексе.
Веороятно проблема фикса в 9.5.6 так и не [до конца] решена до сих пор
:(

ээх


On 16:01 Mon 16 Apr     , Dmitry E. Oboukhov wrote:
>> Привет
>> Если вы будете мешать работать antiwraparound автовакууму - у вас через некоторое обозримое время встанет вообще вся
базаи потребует плотного общения с DBA вроде вот такого: 
>>> ERROR:  database is not accepting commands to avoid wraparound data loss in database "mydb"
>>> HINT:  Stop the postmaster and vacuum that database in single-user mode.
>> https://www.postgresql.org/docs/current/static/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND

> в общем приблизительно я разобрался что произошло.

> видимо бага которую закрывали в 9.5.6-1 и о которую мы в свое время
> нос разбили еще таки есть.

> я запустил руками VACUUM ANALYZE VERBOSE orders;

> затем стопнул prevent-запрос и увидел что VACUUM не может пройти
> поскольку один из индексов фелится vacuum

> ERROR:  failed to re-find parent key in index "orders_from_fullname_idx" for deletion target page 163383

> я дропнул и пересоздал этот индекс и далее снова пустил

> VACUUM ANALYZE VERBOSE orders;

> этот VACUUM еще идет, но судя по всему минут через 15 завершится.

> а дальше будем смотреть, надеюсь что и prevent исчезнет

>> Потому что иначе при wraparound сделать больше ничего нельзя.

>> Ждите когда wraparound завершится либо выполните vacuum freeze самостоятельно.

>> И включите обратно autovacuum. Он выполняет много полезной работы. Если вы думаете что он мешает - значит у вас
недостаточноагрессивно настроен автовакуум. 

> да это понятно. Я его выключил в рамках попытки разобраться что было.

>> С уважением, Сергей
> --

> . ''`.            Dmitry E. Oboukhov <unera@debian.org>
> : :’  :
> `. `~’               GPG key: 4096R/08EEA756 2014-08-30
> `- 71ED ACFC 6801 0DD9 1AD1  9B86 8D1F 969A 08EE A756
--

. ''`.            Dmitry E. Oboukhov <unera@debian.org>
: :’  :
`. `~’               GPG key: 4096R/08EEA756 2014-08-30
  `- 71ED ACFC 6801 0DD9 1AD1  9B86 8D1F 969A 08EE A756

Вложения