LINUX.ORG.RU
ФорумAdmin

Postgres recovery from xid

 , ,


0

2

В postgres есть клевая штука, как recovery_target_xid

Можно восстановиться к конкретной транзакции, указав ее номер.

Все хорошо, но! столкнулся с проблемой, что в файле с логами у меня нет этих самых номеров транзакций :)

Да, номера можно вытягивать через pg_xlogdump, но это тот еще секс.

Посоветуйте, как можно писать номера транзакций в обычном файле с логами.

Сейчас конфиг выглядить вот так:

log_statement = 'mod'
log_line_prefix = 'db=%d,user=%u '

Пробовали добавлять ключи %x и %v, как это указано в документации, https://postgrespro.ru/docs/postgrespro/9.6/runtime-config-logging однако, не помогло.


К сожалению, так сделано логирование %x, что он пишется _для следующего_ запроса, после выделения xid:

[15752] 0 LOG:  statement: begin;
[15752] 0 LOG:  statement: create table x(id int);
[15752] 1158 LOG:  statement: commit;
[15752] 0 LOG:  statement: begin;
[15752] 0 LOG:  statement: insert into x values (1);
[15752] 1159 LOG:  statement: insert into x values (1);
[15752] 1159 LOG:  statement: insert into x values (1);
[15752] 1159 LOG:  statement: commit;
[15752] 0 LOG:  statement: insert into x values (1);
[15752] 0 LOG:  statement: insert into x values (1);
[15752] 0 LOG:  statement: insert into x values (1);

Напишите багрепорт, вдруг доработают когда-нибудь.

anonymous
()

Смотря какую цель ты преследуешь. Писать в лог запросы - это плохая идея.

Лучше, чтобы клиент хранил номера транзакций важных запросов

uspen ★★★★★
()
Ответ на: комментарий от uspen

скажем так, данные, которые нельзя терять.

По этой же причине, трудно использовать target_time т.к за единицу времени, может многое измениться.

imho9
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.