From: | Lucas <root(at)sud0(dot)nz> |
---|---|
To: | Stephen Frost <sfrost(at)snowman(dot)net> |
Cc: | Mladen Gogala <gogala(dot)mladen(at)gmail(dot)com>, pgsql-general(at)lists(dot)postgresql(dot)org |
Subject: | Re: ZFS filesystem - supported ? |
Date: | 2021-10-25 19:59:12 |
Message-ID: | 866F3B6D-737F-4F71-BED2-EF03E32EC2E7@sud0.nz |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 26/10/2021, at 6:13 AM, Stephen Frost <sfrost(at)snowman(dot)net> wrote:
>
> Greetings,
>
> * Mladen Gogala (gogala(dot)mladen(at)gmail(dot)com) wrote:
>> On 10/23/21 23:12, Lucas wrote:
>>> This has proven to work very well for me. I had to restore a few backups
>>> already and it always worked. The bad part is that I need to stop the
>>> database before performing the Snapshot, for data integrity, so that means
>>> that I have a hot-standby server only for these snapshots.
>>> Lucas
>>
>> Actually, you don't need to stop the database. You need to execute
>> pg_start_backup() before taking a snapshot and then pg_stop_backup() when
>> the snapshot is done. You will need to recover the database when you finish
>> the restore but you will not lose any data. I know that pg_begin_backup()
>> and pg_stop_backup() are deprecated but since PostgreSQL doesn't have any
>> API for storage or file system snapshots, that's the only thing that can
>> help you use storage snapshots as backups. To my knowledge,the only database
>> that does have API for storage snapshots is DB2. The API is called "Advanced
>> Copy Services" or ACS. It's documented here:
>>
>> https://www.ibm.com/docs/en/db2/11.1?topic=recovery-db2-advanced-copy-services-acs
>>
>> For Postgres, the old begin/stop backup functions should be sufficient.
>
> No, it's not- you must also be sure to archive any WAL that's generated
> between the pg_start_backup and pg_stop_backup and then to be sure and
> add into the snapshot the appropriate signal files or recovery.conf,
> depending on PG version, to indicate that you're restoring from a backup
> and make sure that the WAL is made available via restore_command.
>
> Just doing stat/stop backup is *not* enough and you run the risk of
> having an invalid backup or corruption when you restore.
>
> If the entire system is on a single volume then you could possibly just
> take a snapshot of it (without any start/stop backup stuff) but it's
> very risky to do that and then try to do PITR with it because we don't
> know where consistency is reached in such a case (we *must* play all the
> way through to the end of the WAL which existed at the time of the
> snapshot in order to reach consistency).
>
> In the end though, really, it's much, much, much better to use a proper
> backup and archiving tool that's written specifically for PG than to try
> and roll your own, using snapshots or not.
>
> Thanks,
>
> Stephen
When I create a snapshot, the script gets the latest WAL file applied from [1] and adds that information to the Snapshot Tags in AWS. I then use that information in the future when restoring the snapshot. The script will read the tag and it will download 50 WAL Files before that and all the WAL files after that required.
The WAL files are being backed up to S3.
I had to restore the database to a PITR state many times, and it always worked very well.
I also create slaves using the snapshot method. So, I don’t mind having to stop/start the Database for the snapshot process, as it’s proven to work fine for the last 5 years.
Lucas
From | Date | Subject | |
---|---|---|---|
Next Message | Mladen Gogala | 2021-10-25 20:40:37 | Re: ZFS filesystem - supported ? |
Previous Message | E-BLOKOS | 2021-10-25 19:43:24 | Re: ZFS filesystem - supported ? |