On Mon, 18 Nov 2019 at 18:48, Nicolas Lutic <n.lu...@loxodata.com> wrote:

> Dear Hackers,
>
> After a drop database
>

with FORCE?


> , he tried to recover the data on the last inserted transaction by using
> the recovery_target_time.
> The issue is the database is present in the system catalog but the
> directory was still deleted.
> Here the technical information of the database
> version 11
> default  postgresql.conf except for this options
>     wal_level = replica
>     archive_mode = on
>     archive_command = 'cp %p /tmp/wal_archive/%f '
>     log_statement = 'all'
>     log_min_messages = debug5
>
>
> The following method was used
>
>    - create cluster
>
>
>    - create database
>
>
>    - create 1 table
>
>
>    - create 1 index on 1 column
>
>
>    - insert 1 rows
>
>
>    - backup with pg_base_backup
>
>
>    - insert 2 rows
>
> autocommit?

>
>
>
>    - drop database
>
> force?


>
>    -     Change recovery behaviour in that case to prevent all xact
>    operation to perform until COMMIT timestamp is checked against
>    recovery_time bound (but it seems to be difficult as state
>    
> https://www.postgresql.org/message-id/flat/20141125160629.GC21475%40msg.df7cb.de
>    which also identifies the problem and tries to give some solutions.  Maybe
>    another way, as a trivial guess (all apologises) is to buffer immediate
>    xacts until we have the commit for each and apply the whole buffer xact
>    once the timestamp known (and checked agains recovery_target_time value);
>
>
>    -     The other way to improve this is to update PostgreSQL
>    documentation  by specifying that recovery_target_time cannot be used
>    in this case. There should be multiple places where it can be stated.
>    The best one (if only one) seems to be in
>    
> https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=doc/src/sgml/config.sgml;h=
>    
> <https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=doc/src/sgml/config.sgml;h=f83770350eda5625179526300c652f23ff29c9fe;hb=HEAD#l3400>
>
>
If this only happens when a DB is dropped under load with force, I lean
toward just documenting it as a corner case.

-- 
 Craig Ringer                   http://www.2ndQuadrant.com/
 2ndQuadrant - PostgreSQL Solutions for the Enterprise

Reply via email to