Обсуждение: How does pg_basebackup manage to create a snapshot of the filesystem?

Поиск
Список
Период
Сортировка

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



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

От
Christophe Pettus
Дата:

> 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




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

От
Stephen Frost
Дата:
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

Вложения