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*/
|
/* backup block by block if datafile AND not compressed by cfs*/
|
||||||
if (!backup_data_file(arguments->from_root,
|
if (!backup_data_file(arguments->from_root,
|
||||||
arguments->to_root, file,
|
arguments->to_root, file,
|
||||||
arguments->prev_backup_start_lsn))
|
arguments->prev_backup_start_lsn,
|
||||||
|
current.backup_mode))
|
||||||
{
|
{
|
||||||
file->write_size = BYTES_INVALID;
|
file->write_size = BYTES_INVALID;
|
||||||
elog(LOG, "File \"%s\" was not copied to backup", file->path);
|
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
|
bool
|
||||||
backup_data_file(const char *from_root, const char *to_root,
|
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];
|
char to_path[MAXPGPATH];
|
||||||
FILE *in;
|
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_skipped = 0;
|
||||||
int n_blocks_read = 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 */
|
/* reset size summary */
|
||||||
file->read_size = 0;
|
file->read_size = 0;
|
||||||
file->write_size = 0;
|
file->write_size = 0;
|
||||||
|
|||||||
+2
-1
@@ -413,7 +413,8 @@ extern int pgFileCompareSize(const void *f1, const void *f2);
|
|||||||
|
|
||||||
/* in data.c */
|
/* in data.c */
|
||||||
extern bool backup_data_file(const char *from_root, const char *to_root,
|
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,
|
extern void restore_data_file(const char *from_root, const char *to_root,
|
||||||
pgFile *file, pgBackup *backup);
|
pgFile *file, pgBackup *backup);
|
||||||
extern bool copy_file(const char *from_root, const char *to_root,
|
extern bool copy_file(const char *from_root, const char *to_root,
|
||||||
|
|||||||
Reference in New Issue
Block a user