Estou praticando Point in Time Recovery (PITR) no PostgreSQL 13 contra exclusão acidental de dados. Como o PostgreSQL oferece vários parâmetros para executar PITR, estou um pouco confuso escolhendo entre Transaction XID e LSN.
Se uma DELETE
declaração acidental removesse um grande número de linhas e eu obtivesse o correspondente XID
a partir LSN
do dump do WAL, executar o PITR produziria o mesmo resultado, independentemente de eu usar o XID ou o LSN?
Existe o risco de perder outras transações confirmadas se eu restaurar usando o XID?
Os resultados podem ser diferentes.
Uma
DROP TABLE
declaração gravará muitos registros WAL, começando com umLOCK
registro para oACCESS EXCLUSIVE
bloqueio feito na tabela. Se você recuperar para esse LSN, esse será um ponto anterior do que se você recuperar para o ID da transação (que significa oCOMMIT
registro para essa transação). A diferença não afeta oDROP TABLE
em si (que nunca será recuperado serecovery_target_inclusive
foroff
), mas pode afetar transações simultâneas que foram confirmadas entre o LSN inicial e o commit doDROP TABLE
.