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

Commit5f2283c

Browse files
committed
Add backup start time as parameter for do_backup
1 parent0b5b37e commit5f2283c

File tree

4 files changed

+35
-13
lines changed

4 files changed

+35
-13
lines changed

‎src/backup.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -695,7 +695,7 @@ pgdata_basic_setup(ConnectionOptions conn_opt, PGNodeInfo *nodeInfo)
695695
*/
696696
int
697697
do_backup(InstanceState*instanceState,pgSetBackupParams*set_backup_params,
698-
boolno_validate,boolno_sync,boolbackup_logs)
698+
boolno_validate,boolno_sync,boolbackup_logs,time_tstart_time)
699699
{
700700
PGconn*backup_conn=NULL;
701701
PGNodeInfonodeInfo;
@@ -710,7 +710,7 @@ do_backup(InstanceState *instanceState, pgSetBackupParams *set_backup_params,
710710
current.external_dir_str=instance_config.external_dir_str;
711711

712712
/* Create backup directory and BACKUP_CONTROL_FILE */
713-
pgBackupCreateDir(&current,instanceState->instance_backup_subdir_path);
713+
pgBackupCreateDir(&current,instanceState,start_time);
714714

715715
if (!instance_config.pgdata)
716716
elog(ERROR,"required parameter not specified: PGDATA "

‎src/catalog.c

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ static pgBackup* get_closest_backup(timelineInfo *tlinfo);
2323
staticpgBackup*get_oldest_backup(timelineInfo*tlinfo);
2424
staticconstchar*backupModes[]= {"","PAGE","PTRACK","DELTA","FULL"};
2525
staticpgBackup*readBackupControlFile(constchar*path);
26-
statictime_tcreate_backup_dir(pgBackup*backup,constchar*backup_instance_path);
26+
staticvoidcreate_backup_dir(pgBackup*backup,constchar*backup_instance_path);
2727

2828
staticboolbackup_lock_exit_hook_registered= false;
2929
staticparray*locks=NULL;
@@ -1420,10 +1420,12 @@ get_multi_timeline_parent(parray *backup_list, parray *tli_list,
14201420
*/
14211421

14221422
void
1423-
pgBackupCreateDir(pgBackup*backup,constchar*backup_instance_path)
1423+
pgBackupCreateDir(pgBackup*backup,InstanceState*instanceState,time_tstart_time)
14241424
{
14251425
inti;
14261426
parray*subdirs=parray_new();
1427+
parray*backups;
1428+
pgBackup*target_backup;
14271429

14281430
parray_append(subdirs,pg_strdup(DATABASE_DIR));
14291431

@@ -1444,7 +1446,26 @@ pgBackupCreateDir(pgBackup *backup, const char *backup_instance_path)
14441446
free_dir_list(external_list);
14451447
}
14461448

1447-
backup->backup_id=create_backup_dir(backup,backup_instance_path);
1449+
/* Get list of all backups*/
1450+
backups=catalog_get_backup_list(instanceState,INVALID_BACKUP_ID);
1451+
if (parray_num(backups)>0)
1452+
{
1453+
target_backup= (pgBackup*)parray_get(backups,0);
1454+
if (start_time>target_backup->backup_id)
1455+
{
1456+
backup->backup_id=start_time;
1457+
create_backup_dir(backup,instanceState->instance_backup_subdir_path);
1458+
}
1459+
else
1460+
{
1461+
elog(ERROR,"Cannot create directory for older backup");
1462+
}
1463+
}
1464+
else
1465+
{
1466+
backup->backup_id=start_time;
1467+
create_backup_dir(backup,instanceState->instance_backup_subdir_path);
1468+
}
14481469

14491470
if (backup->backup_id==0)
14501471
elog(ERROR,"Cannot create backup directory: %s",strerror(errno));
@@ -1471,7 +1492,7 @@ pgBackupCreateDir(pgBackup *backup, const char *backup_instance_path)
14711492
* Create root directory for backup,
14721493
* update pgBackup.root_dir if directory creation was a success
14731494
*/
1474-
time_t
1495+
void
14751496
create_backup_dir(pgBackup*backup,constchar*backup_instance_path)
14761497
{
14771498
intattempts=10;
@@ -1480,17 +1501,16 @@ create_backup_dir(pgBackup *backup, const char *backup_instance_path)
14801501
{
14811502
intrc;
14821503
charpath[MAXPGPATH];
1483-
time_tbackup_id=time(NULL);
14841504

1485-
join_path_components(path,backup_instance_path,base36enc(backup_id));
1505+
join_path_components(path,backup_instance_path,base36enc(backup->backup_id));
14861506

14871507
/* TODO: add wrapper for remote mode */
14881508
rc=dir_create_dir(path,DIR_PERMISSION, true);
14891509

14901510
if (rc==0)
14911511
{
14921512
backup->root_dir=pgut_strdup(path);
1493-
returnbackup_id;
1513+
return;
14941514
}
14951515
else
14961516
{
@@ -1499,7 +1519,6 @@ create_backup_dir(pgBackup *backup, const char *backup_instance_path)
14991519
}
15001520
}
15011521

1502-
return0;
15031522
}
15041523

15051524
/*

‎src/pg_probackup.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -939,6 +939,9 @@ main(int argc, char *argv[])
939939
returndo_init(catalogState);
940940
caseBACKUP_CMD:
941941
{
942+
time_tstart_time;
943+
time(&start_time);
944+
942945
current.stream=stream_wal;
943946

944947
/* sanity */
@@ -947,7 +950,7 @@ main(int argc, char *argv[])
947950
"(-b, --backup-mode)");
948951

949952
returndo_backup(instanceState,set_backup_params,
950-
no_validate,no_sync,backup_logs);
953+
no_validate,no_sync,backup_logs,start_time);
951954
}
952955
caseCATCHUP_CMD:
953956
returndo_catchup(catchup_source_pgdata,catchup_destination_pgdata,num_threads, !no_sync,

‎src/pg_probackup.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -840,7 +840,7 @@ extern char** commands_args;
840840

841841
/* in backup.c */
842842
externintdo_backup(InstanceState*instanceState,pgSetBackupParams*set_backup_params,
843-
boolno_validate,boolno_sync,boolbackup_logs);
843+
boolno_validate,boolno_sync,boolbackup_logs,time_tstart_time);
844844
externvoiddo_checkdb(boolneed_amcheck,ConnectionOptionsconn_opt,
845845
char*pgdata);
846846
externBackupModeparse_backup_mode(constchar*value);
@@ -981,7 +981,7 @@ extern void write_backup_filelist(pgBackup *backup, parray *files,
981981
constchar*root,parray*external_list,boolsync);
982982

983983

984-
externvoidpgBackupCreateDir(pgBackup*backup,constchar*backup_instance_path);
984+
externvoidpgBackupCreateDir(pgBackup*backup,InstanceState*instanceState,time_tstart_time);
985985
externvoidpgNodeInit(PGNodeInfo*node);
986986
externvoidpgBackupInit(pgBackup*backup);
987987
externvoidpgBackupFree(void*backup);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp