Thread: How does pg_basebackup manage to create a snapshot of the filesystem?
How does pg_basebackup manage to create a snapshot of the filesystem?
From
Dennis Jacobfeuerborn
Date:
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
Re: How does pg_basebackup manage to create a snapshot of thefilesystem?
From
Christophe Pettus
Date:
> On Mar 19, 2020, at 15:19, Dennis Jacobfeuerborn <dennisml@conversis.de> 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 thedatabase back up to consistency is the write-ahead log segments that are created while pg_basebackup is running. That'swhy it is important to have all of the WAL segments created during the run (which is what --wal-method=stream providesyou). -- -- Christophe Pettus xof@thebuild.com
Greetings, * Dennis Jacobfeuerborn (dennisml@conversis.de) 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