mirror of
https://github.com/postgrespro/pg_probackup.git
synced 2026-06-21 01:34:15 +02:00
Fix page and ptrack backup. It is necessary to backup only changed relations
This commit is contained in:
+2
-1
@@ -1939,7 +1939,8 @@ backup_files(void *arg)
|
||||
/* backup block by block if datafile AND not compressed by cfs*/
|
||||
if (!backup_data_file(arguments->from_root,
|
||||
arguments->to_root, file,
|
||||
arguments->prev_backup_start_lsn))
|
||||
arguments->prev_backup_start_lsn,
|
||||
current.backup_mode))
|
||||
{
|
||||
file->write_size = BYTES_INVALID;
|
||||
elog(LOG, "File \"%s\" was not copied to backup", file->path);
|
||||
|
||||
+13
-1
@@ -282,7 +282,8 @@ backup_data_page(pgFile *file, XLogRecPtr prev_backup_start_lsn,
|
||||
*/
|
||||
bool
|
||||
backup_data_file(const char *from_root, const char *to_root,
|
||||
pgFile *file, XLogRecPtr prev_backup_start_lsn)
|
||||
pgFile *file, XLogRecPtr prev_backup_start_lsn,
|
||||
BackupMode backup_mode)
|
||||
{
|
||||
char to_path[MAXPGPATH];
|
||||
FILE *in;
|
||||
@@ -292,6 +293,17 @@ backup_data_file(const char *from_root, const char *to_root,
|
||||
int n_blocks_skipped = 0;
|
||||
int n_blocks_read = 0;
|
||||
|
||||
if ((backup_mode == BACKUP_MODE_DIFF_PAGE ||
|
||||
backup_mode == BACKUP_MODE_DIFF_PTRACK) &&
|
||||
file->pagemap.bitmapsize == 0)
|
||||
{
|
||||
/*
|
||||
* There are no changed blocks since last backup. We want make
|
||||
* incremental backup, so we should exit.
|
||||
*/
|
||||
return false;
|
||||
}
|
||||
|
||||
/* reset size summary */
|
||||
file->read_size = 0;
|
||||
file->write_size = 0;
|
||||
|
||||
+2
-1
@@ -413,7 +413,8 @@ extern int pgFileCompareSize(const void *f1, const void *f2);
|
||||
|
||||
/* in data.c */
|
||||
extern bool backup_data_file(const char *from_root, const char *to_root,
|
||||
pgFile *file, XLogRecPtr prev_backup_start_lsn);
|
||||
pgFile *file, XLogRecPtr prev_backup_start_lsn,
|
||||
BackupMode backup_mode);
|
||||
extern void restore_data_file(const char *from_root, const char *to_root,
|
||||
pgFile *file, pgBackup *backup);
|
||||
extern bool copy_file(const char *from_root, const char *to_root,
|
||||
|
||||
Reference in New Issue
Block a user