2013-11-19 1 views
4

Сервер базы данных PostgreSQL хранит «данные изменения» в файле журнала WAL, и я хотел проанализировать файл журнала архива на sql, например mysqlbinlog, разбить файл binlog на sql, чтобы я мог найти приложение выполнить sql. У кого-нибудь есть такой инструмент?Как разобрать файл журнала postgresql wal на sql

ответ

2

Вы не можете. Это изменения фактических блоков диска.

Вы можете настроить сервер для записи всех операторов SQL в файл, если хотите. Не уверен, что вы сможете воспроизвести их, не зная о границах транзакций.

1

Если вы чувствуете приключения, xlogdump может помочь вам частично извлечь данные из ваших сегментов WAL. Если вам действительно нужен только SQL, который выполняется в вашем кластере, установите для log_min_duration_statement = 0 все записи.

+1

Теперь это встроенный модуль 'pg_xlogdump' в' contrib'. Кстати. –

2

Эта функция в настоящее время находится в разработке. (Ищите патчи «логической репликации» Андреса Фрейнда.) Это проект огромный, поэтому не задерживайте дыхание. Короткий ответ: в настоящее время это невозможно.

+2

Логическое декодирование было зафиксировано в 9.4, так что теперь все готово, и есть инструменты, которые его используют. Но вы можете использовать его только для декодирования после настройки, вы не можете ретроактивно декодировать WAL, созданный в какой-то момент в прошлом. (Я знаю, что вы знаете, что Петр, в интересах других, которые находят этот вопрос). –

+0

Имеет ли запись wal какую-либо информацию о схеме его отношения? Что произойдет, если отношение, соответствующее записи, будет изменено до декодирования? –

0

Теперь вы можете реплицировать с помощью SQL. Посмотрите на pglogical. Однако он не охватывает изменения схемы.

 Смежные вопросы

  • Нет связанных вопросов^_^