postgres redo logs запускает таблицу запуска
Допустим, что из-за коррупции автоматическое восстановление запускается postgres. Это приводит к тому, что "как я могу вернуться в 0/9A3F58" в журналах базы данных. Как часть восстановления, я полагаю, он попытается вставить записи для таблицы. Вызывает ли это запуск триггеров вставки базы данных для этой таблицы? Мы используем postgres 8.4.
Фрагмент из журналов postgres:
2015-06-17 10:43:34 PDT LOG: unexpected EOF on client connection
2015-06-17 10:43:34 PDT LOG: unexpected EOF on client connection
2015-06-17 10:43:34 PDT LOG: unexpected EOF on client connection
2015-06-17 10:43:34 PDT LOG: unexpected EOF on client connection
2015-06-19 08:55:30 CDT LOG: database system was interrupted; last known up at 2015-06-17 20:05:02 CDT
2015-06-19 08:55:30 CDT LOG: database system was not properly shut down; automatic recovery in progress
2015-06-19 08:55:30 CDT LOG: redo starts at 0/9A3F58
2015-06-19 08:55:30 CDT LOG: incomplete startup packet
2015-06-19 08:55:30 CDT FATAL: the database system is starting up
2015-06-19 08:55:30 CDT LOG: record with zero length at 0/E90334
2015-06-19 08:55:30 CDT LOG: redo done at 0/E90308
2015-06-19 08:55:30 CDT LOG: last completed transaction was at log time 2015-06-17 12:43:32.471831-05
2015-06-19 08:55:31 CDT LOG: database system is ready to accept connections
2015-06-19 08:55:31 CDT LOG: autovacuum launcher started
2015-06-19 08:59:29 CDT LOG: unexpected EOF on client connection
2015-06-19 08:59:29 CDT LOG: unexpected EOF on client connection
2015-06-19 08:59:29 CDT LOG: unexpected EOF on client connection
1 ответ
Решение
Нет, воспроизведение из журналов упреждающей записи абсолютно не вызывает срабатывания триггеров. На самом деле, они не могут этого сделать, потому что в журналах с предварительной записью хранятся изменения уровня блоков, а не изменений на уровне строк, и они не имеют представления, какой оператор SQL изменил какую строку.