How does pg_basebackup manage to create a snapshot of the filesystem?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

How does pg_basebackup manage to create a snapshot of the filesystem?

Dennis Jacobfeuerborn
Hi,
I'm currently trying to understand how backups work. In the
documentation in section "25.2. File System Level Backup" it says that
filesystem level backups can only be made when the database if offline
yet pg_basebackup seems to do just that but works while the database is
online. Am I misunderstanding something here or does pg_basebackup use
some particular features of Postgres to accomplish this?

Regards,
  Dennis


Reply | Threaded
Open this post in threaded view
|

Re: How does pg_basebackup manage to create a snapshot of the filesystem?

Christophe Pettus-2


> On Mar 19, 2020, at 15:19, Dennis Jacobfeuerborn <[hidden email]> wrote:
> I'm currently trying to understand how backups work. In the
> documentation in section "25.2. File System Level Backup" it says that
> filesystem level backups can only be made when the database if offline
> yet pg_basebackup seems to do just that but works while the database is
> online. Am I misunderstanding something here or does pg_basebackup use
> some particular features of Postgres to accomplish this?

pg_basebackup does, indeed, take an inconsistent copy of the file system while it is running; what allows it to bring the database back up to consistency is the write-ahead log segments that are created while pg_basebackup is running.  That's why it is important to have all of the WAL segments created during the run (which is what --wal-method=stream provides you).
--
-- Christophe Pettus
   [hidden email]



Reply | Threaded
Open this post in threaded view
|

Re: How does pg_basebackup manage to create a snapshot of the filesystem?

Stephen Frost
In reply to this post by Dennis Jacobfeuerborn
Greetings,

* Dennis Jacobfeuerborn ([hidden email]) wrote:
> I'm currently trying to understand how backups work. In the
> documentation in section "25.2. File System Level Backup" it says that
> filesystem level backups can only be made when the database if offline
> yet pg_basebackup seems to do just that but works while the database is
> online. Am I misunderstanding something here or does pg_basebackup use
> some particular features of Postgres to accomplish this?

A simple tar-based backup as discussed in 25.2 can only be done with the
database off-line, but if you're wondering what pg_basebackup is doing
under the covers then you should be reading through 25.3, which talks
about the PostgreSQL WAL, how a backup can be taken in an online manner
provided you retain the WAL that was created during the backup, how to
restore a backup taken in that manner, etc.

All that said, I don't recommend rolling your own backup solution for
PG.  There's a number of good ones out there, starting with
pg_basebackup if you really just need something simple.

Thanks,

Stephen

signature.asc (836 bytes) Download Attachment