Fix page and ptrack backup. It is necessary to backup only changed relations

This commit is contained in:
Arthur Zakirov
2017-11-01 15:13:02 +03:00
parent a4eb925763
commit 304122dc64
3 changed files with 17 additions and 3 deletions
+2 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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,