делаю каждые сутки полный бэкап через pg_basebackup, нужно каждый час делать инкрементальный бэкап и удалять старые инкрементальные бэкапы которые старше недели (полные бэкапы оставлять). собственно вопрос в том, что если в archive_command просто просать cp, то как потом понять какие wal-файлы удалять безопасно и данные уже включены в полные бэкапы?
Никакие архивные WAL с предыдущего полного pg_basebackup удалять нельзя если вы хотите, чтобы можно было что-то восстановить до следующего полного pg_basebackup. Если восстановление в середине между полными бэкапами не требуется -- то можно удалять всё, что там cp в archive_command накопировало.
Инкрементальные бэкапы разных уровней, как бывает для fs, не поддержываются: только полный и всё, что было с полного.
как понять какие wal надо сохранить чтобы можно было восстановиться по полному + wal-ом, если нужно восстановиться с минимальной потерей (не более часа) данных
To make use of the backup, you will need to keep all the WAL segment files generated during and after the file system backup. To aid you in doing this, the base backup process creates a backup history file that is immediately stored into the WAL archive area. This file is named after the first WAL segment file that you need for the file system backup. For example, if the starting WAL file is 0000000100001234000055CD the backup history file will be named something like 0000000100001234000055CD.007C9330.backup. (The second part of the file name stands for an exact position within the WAL file, and can ordinarily be ignored.) Once you have safely archived the file system backup and the WAL segment files used during the backup (as specified in the backup history file), all archived WAL segments with names numerically less are no longer needed to recover the file system backup and can be deleted. However, you should consider keeping several backup sets to be absolutely certain that you can recover your data. The backup history file is just a small text file. It contains the label string you gave to pg_basebackup, as well as the starting and ending times and WAL segments of the backup. If you used the label to identify the associated dump file, then the archived history file is enough to tell you which dump file to restore. from https://www.postgresql.org/docs/13/continuous-archiving.html
То что нужно, спасибо большое
Обсуждают сегодня