mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +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:
@@ -71,13 +71,16 @@ Node *replication_parse_result;
|
||||
%token K_NOWAIT
|
||||
%token K_MAX_RATE
|
||||
%token K_WAL
|
||||
%token K_TABLESPACE_MAP
|
||||
%token K_TIMELINE
|
||||
%token K_PHYSICAL
|
||||
%token K_LOGICAL
|
||||
%token K_SLOT
|
||||
|
||||
%type <node> command
|
||||
%type <node> base_backup start_replication start_logical_replication create_replication_slot drop_replication_slot identify_system timeline_history
|
||||
%type <node> base_backup start_replication start_logical_replication
|
||||
create_replication_slot drop_replication_slot identify_system
|
||||
timeline_history
|
||||
%type <list> base_backup_opt_list
|
||||
%type <defelt> base_backup_opt
|
||||
%type <uintval> opt_timeline
|
||||
@@ -119,12 +122,14 @@ identify_system:
|
||||
;
|
||||
|
||||
/*
|
||||
* BASE_BACKUP [LABEL '<label>'] [PROGRESS] [FAST] [WAL] [NOWAIT] [MAX_RATE %d]
|
||||
* BASE_BACKUP [LABEL '<label>'] [PROGRESS] [FAST] [WAL] [NOWAIT]
|
||||
* [MAX_RATE %d] [TABLESPACE_MAP]
|
||||
*/
|
||||
base_backup:
|
||||
K_BASE_BACKUP base_backup_opt_list
|
||||
{
|
||||
BaseBackupCmd *cmd = (BaseBackupCmd *) makeNode(BaseBackupCmd);
|
||||
BaseBackupCmd *cmd =
|
||||
(BaseBackupCmd *) makeNode(BaseBackupCmd);
|
||||
cmd->options = $2;
|
||||
$$ = (Node *) cmd;
|
||||
}
|
||||
@@ -168,6 +173,11 @@ base_backup_opt:
|
||||
$$ = makeDefElem("max_rate",
|
||||
(Node *)makeInteger($2));
|
||||
}
|
||||
| K_TABLESPACE_MAP
|
||||
{
|
||||
$$ = makeDefElem("tablespace_map",
|
||||
(Node *)makeInteger(TRUE));
|
||||
}
|
||||
;
|
||||
|
||||
create_replication_slot:
|
||||
|
Reference in New Issue
Block a user