PostgreSQL Source Code git master
Loading...
Searching...
No Matches
basebackup.h File Reference
#include "nodes/replnodes.h"
Include dependency graph for basebackup.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  tablespaceinfo
 

Macros

#define MAX_RATE_LOWER   32
 
#define MAX_RATE_UPPER   1048576
 

Functions

void SendBaseBackup (BaseBackupCmd *cmd, struct IncrementalBackupInfo *ib)
 

Macro Definition Documentation

◆ MAX_RATE_LOWER

#define MAX_RATE_LOWER   32

Definition at line 20 of file basebackup.h.

◆ MAX_RATE_UPPER

#define MAX_RATE_UPPER   1048576

Definition at line 21 of file basebackup.h.

Function Documentation

◆ SendBaseBackup()

void SendBaseBackup ( BaseBackupCmd cmd,
struct IncrementalBackupInfo ib 
)
extern

Definition at line 991 of file basebackup.c.

992{
994 bbsink *sink;
996
997 if (status == SESSION_BACKUP_RUNNING)
1000 errmsg("a backup is already in progress in this session")));
1001
1003
1005
1007 {
1008 char activitymsg[50];
1009
1010 snprintf(activitymsg, sizeof(activitymsg), "sending backup \"%s\"",
1011 opt.label);
1013 }
1014
1015 /*
1016 * If we're asked to perform an incremental backup and the user has not
1017 * supplied a manifest, that's an ERROR.
1018 *
1019 * If we're asked to perform a full backup and the user did supply a
1020 * manifest, just ignore it.
1021 */
1022 if (!opt.incremental)
1023 ib = NULL;
1024 else if (ib == NULL)
1025 ereport(ERROR,
1027 errmsg("must UPLOAD_MANIFEST before performing an incremental BASE_BACKUP")));
1028
1029 /*
1030 * If the target is specifically 'client' then set up to stream the backup
1031 * to the client; otherwise, it's being sent someplace else and should not
1032 * be sent to the client. BaseBackupGetSink has the job of setting up a
1033 * sink to send the backup data wherever it needs to go.
1034 */
1036 if (opt.target_handle != NULL)
1038
1039 /* Set up network throttling, if client requested it */
1040 if (opt.maxrate > 0)
1042
1043 /* Set up server-side compression, if client requested it */
1046 else if (opt.compression == PG_COMPRESSION_LZ4)
1048 else if (opt.compression == PG_COMPRESSION_ZSTD)
1050
1051 /* Set up progress reporting. */
1053
1054 /*
1055 * Perform the base backup, but make sure we clean up the bbsink even if
1056 * an error occurs.
1057 */
1058 PG_TRY();
1059 {
1060 perform_base_backup(&opt, sink, ib);
1061 }
1062 PG_FINALLY();
1063 {
1065 }
1066 PG_END_TRY();
1067}
static void parse_basebackup_options(List *options, basebackup_options *opt)
Definition basebackup.c:699
static void perform_base_backup(basebackup_options *opt, bbsink *sink, IncrementalBackupInfo *ib)
Definition basebackup.c:239
bbsink * bbsink_copystream_new(bool send_to_client)
bbsink * bbsink_gzip_new(bbsink *next, pg_compress_specification *compress)
bbsink * bbsink_lz4_new(bbsink *next, pg_compress_specification *compress)
bbsink * bbsink_progress_new(bbsink *next, bool estimate_backup_size, bool incremental)
static void bbsink_cleanup(bbsink *sink)
bbsink * BaseBackupGetSink(BaseBackupTargetHandle *handle, bbsink *next_sink)
bbsink * bbsink_throttle_new(bbsink *next, uint32 maxrate)
bbsink * bbsink_zstd_new(bbsink *next, pg_compress_specification *compress)
@ PG_COMPRESSION_GZIP
Definition compression.h:24
@ PG_COMPRESSION_LZ4
Definition compression.h:25
@ PG_COMPRESSION_ZSTD
Definition compression.h:26
int errcode(int sqlerrcode)
Definition elog.c:874
int errmsg(const char *fmt,...)
Definition elog.c:1093
#define PG_TRY(...)
Definition elog.h:372
#define PG_END_TRY(...)
Definition elog.h:397
#define ERROR
Definition elog.h:39
#define PG_FINALLY(...)
Definition elog.h:389
#define ereport(elevel,...)
Definition elog.h:150
#define snprintf
Definition port.h:260
static int fb(int x)
bool update_process_title
Definition ps_status.c:31
static void set_ps_display(const char *activity)
Definition ps_status.h:40
List * options
Definition replnodes.h:44
pg_compress_specification compression_specification
Definition basebackup.c:77
const char * label
Definition basebackup.c:64
pg_compress_algorithm compression
Definition basebackup.c:76
BaseBackupTargetHandle * target_handle
Definition basebackup.c:74
void WalSndSetState(WalSndState state)
Definition walsender.c:3953
@ WALSNDSTATE_BACKUP
SessionBackupState get_backup_status(void)
Definition xlog.c:9251
SessionBackupState
Definition xlog.h:303
@ SESSION_BACKUP_RUNNING
Definition xlog.h:305

References BaseBackupGetSink(), bbsink_cleanup(), bbsink_copystream_new(), bbsink_gzip_new(), bbsink_lz4_new(), bbsink_progress_new(), bbsink_throttle_new(), bbsink_zstd_new(), basebackup_options::compression, basebackup_options::compression_specification, ereport, errcode(), errmsg(), ERROR, fb(), get_backup_status(), basebackup_options::incremental, basebackup_options::label, basebackup_options::maxrate, BaseBackupCmd::options, parse_basebackup_options(), perform_base_backup(), PG_COMPRESSION_GZIP, PG_COMPRESSION_LZ4, PG_COMPRESSION_ZSTD, PG_END_TRY, PG_FINALLY, PG_TRY, basebackup_options::progress, basebackup_options::send_to_client, SESSION_BACKUP_RUNNING, set_ps_display(), snprintf, basebackup_options::target_handle, update_process_title, WalSndSetState(), and WALSNDSTATE_BACKUP.

Referenced by exec_replication_command().