Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit6d2a51e

Browse files
committed
Merge with master
2 parents42449fe +d9cb01a commit6d2a51e

File tree

15 files changed

+302
-88
lines changed

15 files changed

+302
-88
lines changed

‎src/backup.c‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2764,6 +2764,12 @@ StreamLog(void *arg)
27642764
stream_stop_timeout=0;
27652765
stream_stop_begin=0;
27662766

2767+
#ifPG_VERSION_NUM >=100000
2768+
/* if slot name was not provided for temp slot, use default slot name */
2769+
if (!replication_slot&&temp_slot)
2770+
replication_slot="pg_probackup_slot";
2771+
#endif
2772+
27672773
/*
27682774
* Start the replication
27692775
*/
@@ -2784,6 +2790,7 @@ StreamLog(void *arg)
27842790
ctl.walmethod=CreateWalDirectoryMethod(stream_arg->basedir,0, true);
27852791
ctl.replication_slot=replication_slot;
27862792
ctl.stop_socket=PGINVALID_SOCKET;
2793+
ctl.temp_slot=temp_slot;
27872794
#else
27882795
ctl.basedir= (char*)stream_arg->basedir;
27892796
#endif

‎src/catalog.c‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -525,6 +525,11 @@ pgBackupWriteControl(FILE *out, pgBackup *backup)
525525

526526
time2iso(timestamp,lengthof(timestamp),backup->start_time);
527527
fio_fprintf(out,"start-time = '%s'\n",timestamp);
528+
if (backup->merge_time>0)
529+
{
530+
time2iso(timestamp,lengthof(timestamp),backup->merge_time);
531+
fio_fprintf(out,"merge-time = '%s'\n",timestamp);
532+
}
528533
if (backup->end_time>0)
529534
{
530535
time2iso(timestamp,lengthof(timestamp),backup->end_time);
@@ -628,6 +633,7 @@ readBackupControlFile(const char *path)
628633
{'s',0,"start-lsn",&start_lsn,SOURCE_FILE_STRICT},
629634
{'s',0,"stop-lsn",&stop_lsn,SOURCE_FILE_STRICT},
630635
{'t',0,"start-time",&backup->start_time,SOURCE_FILE_STRICT},
636+
{'t',0,"merge-time",&backup->merge_time,SOURCE_FILE_STRICT},
631637
{'t',0,"end-time",&backup->end_time,SOURCE_FILE_STRICT},
632638
{'U',0,"recovery-xid",&backup->recovery_xid,SOURCE_FILE_STRICT},
633639
{'t',0,"recovery-time",&backup->recovery_time,SOURCE_FILE_STRICT},
@@ -853,6 +859,7 @@ pgBackupInit(pgBackup *backup)
853859
backup->start_lsn=0;
854860
backup->stop_lsn=0;
855861
backup->start_time= (time_t)0;
862+
backup->merge_time= (time_t)0;
856863
backup->end_time= (time_t)0;
857864
backup->recovery_xid=0;
858865
backup->recovery_time= (time_t)0;

‎src/data.c‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1556,7 +1556,7 @@ check_file_pages(pgFile *file, XLogRecPtr stop_lsn, uint32 checksum_version,
15561556
pg_crc32crc;
15571557
booluse_crc32c=backup_version <=20021||backup_version >=20025;
15581558

1559-
elog(VERBOSE,"validate relation blocks for file %s",file->name);
1559+
elog(VERBOSE,"validate relation blocks for file %s",file->path);
15601560

15611561
in=fopen(file->path,PG_BINARY_R);
15621562
if (in==NULL)

‎src/help.c‎

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,9 @@ help_pg_probackup(void)
9797
printf(_(" [--format=format]\n"));
9898

9999
printf(_("\n %s backup -B backup-path -b backup-mode --instance=instance_name\n"),PROGRAM_NAME);
100-
printf(_(" [-C] [--stream [-S slot-name]] [--backup-pg-log]\n"));
101-
printf(_(" [-j num-threads] [--archive-timeout=archive-timeout]\n"));
102-
printf(_(" [--progress]\n"));
100+
printf(_(" [-C] [--stream [-S slot-name] [--temp-slot]\n"));
101+
printf(_(" [--backup-pg-log] [-j num-threads]\n"));
102+
printf(_(" [--archive-timeout=archive-timeout] [--progress]\n"));
103103
printf(_(" [--log-level-console=log-level-console]\n"));
104104
printf(_(" [--log-level-file=log-level-file]\n"));
105105
printf(_(" [--log-filename=log-filename]\n"));
@@ -201,9 +201,9 @@ static void
201201
help_backup(void)
202202
{
203203
printf(_("%s backup -B backup-path -b backup-mode --instance=instance_name\n"),PROGRAM_NAME);
204-
printf(_(" [-C] [--stream [-S slot-name]] [--backup-pg-log]\n"));
205-
printf(_(" [-j num-threads] [--archive-timeout=archive-timeout]\n"));
206-
printf(_(" [--progress]\n"));
204+
printf(_(" [-C] [--stream [-S slot-name] [--temp-slot]\n"));
205+
printf(_(" [--backup-pg-log] [-j num-threads]\n"));
206+
printf(_(" [--archive-timeout=archive-timeout] [--progress]\n"));
207207
printf(_(" [--log-level-console=log-level-console]\n"));
208208
printf(_(" [--log-level-file=log-level-file]\n"));
209209
printf(_(" [--log-filename=log-filename]\n"));
@@ -233,6 +233,7 @@ help_backup(void)
233233
printf(_(" -C, --smooth-checkpoint do smooth checkpoint before backup\n"));
234234
printf(_(" --stream stream the transaction log and include it in the backup\n"));
235235
printf(_(" -S, --slot=SLOTNAME replication slot to use\n"));
236+
printf(_(" --temp-slot use temporary replication slot\n"));
236237
printf(_(" --backup-pg-log backup of '%s' directory\n"),PG_LOG_DIR);
237238
printf(_(" -j, --threads=NUM number of parallel threads\n"));
238239
printf(_(" --archive-timeout=timeout wait timeout for WAL segment archiving (default: 5min)\n"));
@@ -285,11 +286,11 @@ help_backup(void)
285286
printf(_(" -W, --password force password prompt\n"));
286287

287288
printf(_("\n Replica options:\n"));
288-
printf(_(" --master-user=user_name user name to connect to master\n"));
289-
printf(_(" --master-db=db_name database to connect to master\n"));
290-
printf(_(" --master-host=host_name database server host of master\n"));
291-
printf(_(" --master-port=port database server port of master\n"));
292-
printf(_(" --replica-timeout=timeout wait timeout for WAL segment streaming through replication (default: 5min)\n"));
289+
printf(_(" --master-user=user_name user name to connect to master (deprecated)\n"));
290+
printf(_(" --master-db=db_name database to connect to master (deprecated)\n"));
291+
printf(_(" --master-host=host_name database server host of master (deprecated)\n"));
292+
printf(_(" --master-port=port database server port of master (deprecated)\n"));
293+
printf(_(" --replica-timeout=timeout wait timeout for WAL segment streaming through replication (deprecated)\n"));
293294

294295
printf(_("\n Remote options:\n"));
295296
printf(_(" --remote-proto=protocol remote protocol to use\n"));
@@ -570,14 +571,15 @@ help_set_config(void)
570571
printf(_(" -h, --host=HOSTNAME database server host or socket directory(default: 'local socket')\n"));
571572
printf(_(" -p, --port=PORT database server port (default: 5432)\n"));
572573

573-
printf(_("\n Replica options:\n"));
574-
printf(_(" --master-user=user_name user name to connect to master\n"));
575-
printf(_(" --master-db=db_name database to connect to master\n"));
576-
printf(_(" --master-host=host_name database server host of master\n"));
577-
printf(_(" --master-port=port database server port of master\n"));
578-
printf(_(" --replica-timeout=timeout wait timeout for WAL segment streaming through replication (default: 5min)\n"));
579574
printf(_("\n Archive options:\n"));
580575
printf(_(" --archive-timeout=timeout wait timeout for WAL segment archiving (default: 5min)\n"));
576+
577+
printf(_("\n Replica options:\n"));
578+
printf(_(" --master-user=user_name user name to connect to master (deprecated)\n"));
579+
printf(_(" --master-db=db_name database to connect to master (deprecated)\n"));
580+
printf(_(" --master-host=host_name database server host of master (deprecated)\n"));
581+
printf(_(" --master-port=port database server port of master (deprecated)\n"));
582+
printf(_(" --replica-timeout=timeout wait timeout for WAL segment streaming through replication (deprecated)\n"));
581583
}
582584

583585
staticvoid

‎src/merge.c‎

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,10 @@ merge_backups(pgBackup *to_backup, pgBackup *from_backup)
167167
pthread_t*threads=NULL;
168168
merge_files_arg*threads_args=NULL;
169169
inti;
170+
time_tmerge_time;
170171
boolmerge_isok= true;
171172

173+
merge_time=time(NULL);
172174
elog(INFO,"Merging backup %s with backup %s",from_backup_id,to_backup_id);
173175

174176
/*
@@ -275,11 +277,16 @@ merge_backups(pgBackup *to_backup, pgBackup *from_backup)
275277
* Update to_backup metadata.
276278
*/
277279
to_backup->status=BACKUP_STATUS_OK;
280+
StrNCpy(to_backup->program_version,PROGRAM_VERSION,
281+
sizeof(to_backup->program_version));
278282
to_backup->parent_backup=INVALID_BACKUP_ID;
279283
to_backup->start_lsn=from_backup->start_lsn;
280284
to_backup->stop_lsn=from_backup->stop_lsn;
281285
to_backup->recovery_time=from_backup->recovery_time;
282286
to_backup->recovery_xid=from_backup->recovery_xid;
287+
to_backup->merge_time=merge_time;
288+
to_backup->end_time=time(NULL);
289+
283290
/*
284291
* If one of the backups isn't "stream" backup then the target backup become
285292
* non-stream backup too.
@@ -388,6 +395,7 @@ merge_files(void *arg)
388395
pgFile*file= (pgFile*)parray_get(argument->files,i);
389396
pgFile*to_file;
390397
pgFile**res_file;
398+
charto_file_path[MAXPGPATH];/* Path of target file */
391399
charfrom_file_path[MAXPGPATH];
392400
char*prev_file_path;
393401

@@ -410,6 +418,8 @@ merge_files(void *arg)
410418
pgFileComparePathDesc);
411419
to_file= (res_file) ?*res_file :NULL;
412420

421+
join_path_components(to_file_path,argument->to_root,file->path);
422+
413423
/*
414424
* Skip files which haven't changed since previous backup. But in case
415425
* of DELTA backup we should consider n_blocks to truncate the target
@@ -428,7 +438,15 @@ merge_files(void *arg)
428438
{
429439
file->compress_alg=to_file->compress_alg;
430440
file->write_size=to_file->write_size;
431-
file->crc=to_file->crc;
441+
442+
/*
443+
* Recalculate crc for backup prior to 2.0.25.
444+
*/
445+
if (parse_program_version(from_backup->program_version)<20025)
446+
file->crc=pgFileGetCRC(to_file_path, true, true,NULL);
447+
/* Otherwise just get it from the previous file */
448+
else
449+
file->crc=to_file->crc;
432450
}
433451

434452
continue;
@@ -448,10 +466,6 @@ merge_files(void *arg)
448466

449467
if (file->is_datafile&& !file->is_cfs)
450468
{
451-
charto_file_path[MAXPGPATH];/* Path of target file */
452-
453-
join_path_components(to_file_path,argument->to_root,prev_file_path);
454-
455469
/*
456470
* We need more complicate algorithm if target file should be
457471
* compressed.

‎src/pg_probackup.c‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ boolprogress = false;
6565
#ifPG_VERSION_NUM >=100000
6666
char*replication_slot=NULL;
6767
#endif
68+
booltemp_slot= false;
6869

6970
/* backup options */
7071
boolbackup_logs= false;
@@ -136,6 +137,7 @@ static ConfigOption cmd_options[] =
136137
{'f','b',"backup-mode",opt_backup_mode,SOURCE_CMD_STRICT },
137138
{'b','C',"smooth-checkpoint",&smooth_checkpoint,SOURCE_CMD_STRICT },
138139
{'s','S',"slot",&replication_slot,SOURCE_CMD_STRICT },
140+
{'b',234,"temp-slot",&temp_slot,SOURCE_CMD_STRICT },
139141
{'b',134,"delete-wal",&delete_wal,SOURCE_CMD_STRICT },
140142
{'b',135,"delete-expired",&delete_expired,SOURCE_CMD_STRICT },
141143
/* restore options */
@@ -603,8 +605,8 @@ compress_init(void)
603605
if (instance_config.compress_level<0||instance_config.compress_level>9)
604606
elog(ERROR,"--compress-level value must be in the range from 0 to 9");
605607

606-
if (instance_config.compress_level==0)
607-
instance_config.compress_alg=NOT_DEFINED_COMPRESS;
608+
if (instance_config.compress_alg==ZLIB_COMPRESS&&instance_config.compress_level==0)
609+
elog(WARNING,"Compression level 0 will lead to data bloat!");
608610

609611
if (backup_subcmd==BACKUP_CMD||backup_subcmd==ARCHIVE_PUSH_CMD)
610612
{

‎src/pg_probackup.h‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ struct pgBackup
229229
XLogRecPtrstop_lsn;/* backup's finishing transaction log location */
230230
time_tstart_time;/* since this moment backup has status
231231
* BACKUP_STATUS_RUNNING */
232+
time_tmerge_time;/* the moment when merge was started or 0 */
232233
time_tend_time;/* the moment when backup was finished, or the moment
233234
* when we realized that backup is broken */
234235
time_trecovery_time;/* Earliest moment for which you can restore
@@ -383,6 +384,7 @@ extern boolprogress;
383384
/* In pre-10 'replication_slot' is defined in receivelog.h */
384385
externchar*replication_slot;
385386
#endif
387+
externbooltemp_slot;
386388

387389
/* backup options */
388390
externboolsmooth_checkpoint;

‎src/show.c‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,9 @@ show_instance_plain(parray *backup_list, bool show_name)
388388
if (backup->status==BACKUP_STATUS_RUNNING)
389389
snprintf(row->duration,lengthof(row->duration),"%.*lfs",0,
390390
difftime(current_time,backup->start_time));
391-
391+
elseif (backup->merge_time!= (time_t)0)
392+
snprintf(row->duration,lengthof(row->duration),"%.*lfs",0,
393+
difftime(backup->end_time,backup->merge_time));
392394
elseif (backup->end_time!= (time_t)0)
393395
snprintf(row->duration,lengthof(row->duration),"%.*lfs",0,
394396
difftime(backup->end_time,backup->start_time));

‎src/utils/configuration.c‎

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -269,12 +269,24 @@ assign_option(ConfigOption *opt, const char *optarg, OptionSource src)
269269
}
270270
}
271271

272-
if (isprint(opt->sname))
273-
elog(ERROR,"Option -%c, --%s should be %s: '%s'",
274-
opt->sname,opt->lname,message,optarg);
272+
if (optarg)
273+
{
274+
if (isprint(opt->sname))
275+
elog(ERROR,"Option -%c, --%s should be %s: '%s'",
276+
opt->sname,opt->lname,message,optarg);
277+
else
278+
elog(ERROR,"Option --%s should be %s: '%s'",
279+
opt->lname,message,optarg);
280+
}
275281
else
276-
elog(ERROR,"Option --%s should be %s: '%s'",
277-
opt->lname,message,optarg);
282+
{
283+
if (isprint(opt->sname))
284+
elog(ERROR,"Option -%c, --%s should be %s",
285+
opt->sname,opt->lname,message);
286+
else
287+
elog(ERROR,"Option --%s should be %s",
288+
opt->lname,message);
289+
}
278290
}
279291

280292
staticconstchar*

‎tests/__init__.py‎

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,6 @@ def load_tests(loader, tests, pattern):
3030
suite.addTests(loader.loadTestsFromModule(option_test))
3131
suite.addTests(loader.loadTestsFromModule(page))
3232
suite.addTests(loader.loadTestsFromModule(ptrack))
33-
suite.addTests(loader.loadTestsFromModule(ptrack_clean))
34-
suite.addTests(loader.loadTestsFromModule(ptrack_empty))
35-
suite.addTests(loader.loadTestsFromModule(ptrack_cluster))
36-
suite.addTests(loader.loadTestsFromModule(ptrack_move_to_tablespace))
37-
suite.addTests(loader.loadTestsFromModule(ptrack_recovery))
38-
suite.addTests(loader.loadTestsFromModule(ptrack_truncate))
39-
suite.addTests(loader.loadTestsFromModule(ptrack_vacuum))
40-
suite.addTests(loader.loadTestsFromModule(ptrack_vacuum_bits_frozen))
41-
suite.addTests(loader.loadTestsFromModule(ptrack_vacuum_bits_visibility))
42-
suite.addTests(loader.loadTestsFromModule(ptrack_vacuum_full))
43-
suite.addTests(loader.loadTestsFromModule(ptrack_vacuum_truncate))
4433
suite.addTests(loader.loadTestsFromModule(remote))
4534
suite.addTests(loader.loadTestsFromModule(replica))
4635
suite.addTests(loader.loadTestsFromModule(restore_test))

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp