mirror of
https://github.com/postgres/postgres.git
synced 2025-09-09 13:09:39 +03:00
Map basebackup tablespaces using a tablespace_map file
Windows can't reliably restore symbolic links from a tar format, so instead during backup start we create a tablespace_map file, which is used by the restoring postgres to create the correct links in pg_tblspc. The backup protocol also now has an option to request this file to be included in the backup stream, and this is used by pg_basebackup when operating in tar mode. This is done on all platforms, not just Windows. This means that pg_basebackup will not not work in tar mode against 9.4 and older servers, as this protocol option isn't implemented there. Amit Kapila, reviewed by Dilip Kumar, with a little editing from me.
This commit is contained in:
@@ -17,6 +17,8 @@
|
||||
#include "access/xlogreader.h"
|
||||
#include "datatype/timestamp.h"
|
||||
#include "lib/stringinfo.h"
|
||||
#include "nodes/pg_list.h"
|
||||
#include "storage/fd.h"
|
||||
|
||||
|
||||
/* Sync methods */
|
||||
@@ -258,7 +260,9 @@ extern void assign_checkpoint_completion_target(double newval, void *extra);
|
||||
* Starting/stopping a base backup
|
||||
*/
|
||||
extern XLogRecPtr do_pg_start_backup(const char *backupidstr, bool fast,
|
||||
TimeLineID *starttli_p, char **labelfile);
|
||||
TimeLineID *starttli_p, char **labelfile, DIR *tblspcdir,
|
||||
List **tablespaces, char **tblspcmapfile, bool infotbssize,
|
||||
bool needtblspcmapfile);
|
||||
extern XLogRecPtr do_pg_stop_backup(char *labelfile, bool waitforarchive,
|
||||
TimeLineID *stoptli_p);
|
||||
extern void do_pg_abort_backup(void);
|
||||
@@ -267,4 +271,7 @@ extern void do_pg_abort_backup(void);
|
||||
#define BACKUP_LABEL_FILE "backup_label"
|
||||
#define BACKUP_LABEL_OLD "backup_label.old"
|
||||
|
||||
#define TABLESPACE_MAP "tablespace_map"
|
||||
#define TABLESPACE_MAP_OLD "tablespace_map.old"
|
||||
|
||||
#endif /* XLOG_H */
|
||||
|
Reference in New Issue
Block a user