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

Commitaf29599

Browse files
committed
Merge master Version 1.1.11
2 parentsab1965d +e3a3737 commitaf29599

36 files changed

+3732
-1711
lines changed

‎.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
/env
2929
/tests/__pycache__/
3030
/tests/tmp_dirs/
31+
/tests/*pyc
3132

3233
# Extra files
3334
/datapagemap.c

‎Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ OBJS = backup.o \
66
delete.o\
77
dir.o\
88
fetch.o\
9+
help.o\
910
init.o\
1011
parray.o\
1112
pg_probackup.o\

‎data.c

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ static void
5656
backup_data_page(pgFile*file,XLogRecPtrprev_backup_start_lsn,
5757
BlockNumberblknum,BlockNumbernblocks,
5858
FILE*in,FILE*out,
59-
pg_crc32*crc)
59+
pg_crc32*crc,int*n_skipped)
6060
{
6161
BackupPageHeaderheader;
6262
off_toffset;
@@ -134,7 +134,10 @@ backup_data_page(pgFile *file, XLogRecPtr prev_backup_start_lsn,
134134
if (!XLogRecPtrIsInvalid(prev_backup_start_lsn)
135135
&& !XLogRecPtrIsInvalid(page_lsn)
136136
&&page_lsn<prev_backup_start_lsn)
137+
{
138+
*n_skipped+=1;
137139
return;
140+
}
138141

139142
/* Verify checksum */
140143
if(current.checksum_version&& !is_zero_page)
@@ -195,6 +198,8 @@ backup_data_file(const char *from_root, const char *to_root,
195198
FILE*out;
196199
BlockNumberblknum=0;
197200
BlockNumbernblocks=0;
201+
intn_blocks_skipped=0;
202+
intn_blocks_read=0;
198203

199204
/* reset size summary */
200205
file->read_size=0;
@@ -253,26 +258,24 @@ backup_data_file(const char *from_root, const char *to_root,
253258
if (file->pagemap.bitmapsize==0)
254259
{
255260
for (blknum=0;blknum<nblocks;blknum++)
261+
{
256262
backup_data_page(file,prev_backup_start_lsn,blknum,
257-
nblocks,in,out,&(file->crc));
263+
nblocks,in,out,&(file->crc),&n_blocks_skipped);
264+
n_blocks_read++;
265+
}
258266
}
259267
else
260268
{
261269
datapagemap_iterator_t*iter;
262270
iter=datapagemap_iterate(&file->pagemap);
263271
while (datapagemap_next(iter,&blknum))
272+
{
264273
backup_data_page(file,prev_backup_start_lsn,blknum,
265-
nblocks,in,out,&(file->crc));
274+
nblocks,in,out,&(file->crc),&n_blocks_skipped);
275+
n_blocks_read++;
276+
}
266277

267278
pg_free(iter);
268-
/*
269-
* If we have pagemap then file can't be a zero size.
270-
* Otherwise, we will clear the last file.
271-
* Increase read_size to delete after.
272-
* TODO rewrite this code
273-
*/
274-
if (file->read_size==0)
275-
file->read_size++;
276279
}
277280

278281
/* update file permission */
@@ -294,8 +297,11 @@ backup_data_file(const char *from_root, const char *to_root,
294297
if (file->read_size==0)
295298
file->is_datafile= false;
296299

297-
/* We do not backup if all pages skipped. */
298-
if (file->write_size==0&&file->read_size>0)
300+
/*
301+
* If we have pagemap then file can't be a zero size.
302+
* Otherwise, we will clear the last file.
303+
*/
304+
if (n_blocks_read==n_blocks_skipped)
299305
{
300306
if (remove(to_path)==-1)
301307
elog(ERROR,"cannot remove file \"%s\": %s",to_path,
@@ -406,7 +412,7 @@ restore_file_partly(const char *from_root,const char *to_root, pgFile *file)
406412
fclose(out);
407413
}
408414

409-
staticvoid
415+
void
410416
restore_compressed_file(constchar*from_root,
411417
constchar*to_root,
412418
pgFile*file)
@@ -436,20 +442,6 @@ restore_data_file(const char *from_root,
436442
BackupPageHeaderheader;
437443
BlockNumberblknum;
438444

439-
if (!file->is_datafile)
440-
{
441-
/*
442-
* If the file is not a datafile and not compressed file,
443-
* just copy it.
444-
*/
445-
if (file->generation==-1)
446-
copy_file(from_root,to_root,file);
447-
else
448-
restore_compressed_file(from_root,to_root,file);
449-
450-
return;
451-
}
452-
453445
/* open backup mode file for read */
454446
in=fopen(file->path,"r");
455447
if (in==NULL)

‎delete.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,9 +207,9 @@ do_retention_purge(void)
207207
parray_free(backup_list);
208208

209209
if (backup_deleted)
210-
elog(INFO,"purging finished");
210+
elog(INFO,"Purging finished");
211211
else
212-
elog(INFO,"no one backup was deleted by retention policy");
212+
elog(INFO,"Nothing to delete by retention policy");
213213

214214
return0;
215215
}

‎help.c

Lines changed: 238 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
/*-------------------------------------------------------------------------
2+
*
3+
* help.c
4+
*
5+
* Portions Copyright (c) 2017-2017, Postgres Professional
6+
*
7+
*-------------------------------------------------------------------------
8+
*/
9+
#include"pg_probackup.h"
10+
11+
staticvoidhelp_init(void);
12+
staticvoidhelp_backup(void);
13+
staticvoidhelp_restore(void);
14+
staticvoidhelp_validate(void);
15+
staticvoidhelp_show(void);
16+
staticvoidhelp_delete(void);
17+
staticvoidhelp_set_config(void);
18+
staticvoidhelp_show_config(void);
19+
20+
void
21+
help_command(char*command)
22+
{
23+
if (strcmp(command,"init")==0)
24+
help_init();
25+
elseif (strcmp(command,"backup")==0)
26+
help_backup();
27+
elseif (strcmp(command,"restore")==0)
28+
help_restore();
29+
elseif (strcmp(command,"validate")==0)
30+
help_validate();
31+
elseif (strcmp(command,"show")==0)
32+
help_show();
33+
elseif (strcmp(command,"delete")==0)
34+
help_delete();
35+
elseif (strcmp(command,"set-config")==0)
36+
help_set_config();
37+
elseif (strcmp(command,"show-config")==0)
38+
help_show_config();
39+
elseif (strcmp(command,"--help")==0
40+
||strcmp(command,"help")==0
41+
||strcmp(command,"-?")==0
42+
||strcmp(command,"--version")==0
43+
||strcmp(command,"version")==0
44+
||strcmp(command,"-V")==0)
45+
printf(_("No help page for \"%s\" command. Try pg_probackup help\n"),command);
46+
else
47+
printf(_("Unknown command. Try pg_probackup help\n"));
48+
exit(0);
49+
}
50+
51+
void
52+
help_pg_probackup(void)
53+
{
54+
printf(_("\n%s - utility to manage backup/recovery of PostgreSQL database.\n\n"),PROGRAM_NAME);
55+
56+
printf(_(" %s help [COMMAND]\n"),PROGRAM_NAME);
57+
58+
printf(_("\n %s version\n"),PROGRAM_NAME);
59+
60+
printf(_("\n %s init -B backup-path -D pgdata-dir\n"),PROGRAM_NAME);
61+
62+
printf(_("\n %s set-config -B backup-dir\n"),PROGRAM_NAME);
63+
printf(_(" [-d dbname] [-h host] [-p port] [-U username]\n"));
64+
printf(_(" [--retention-redundancy=retention-redundancy]]\n"));
65+
printf(_(" [--retention-window=retention-window]\n"));
66+
67+
printf(_("\n %s show-config -B backup-dir\n"),PROGRAM_NAME);
68+
69+
printf(_("\n %s backup -B backup-path -b backup-mode\n"),PROGRAM_NAME);
70+
printf(_(" [-D pgdata-dir] [-C] [--stream [-S slot-name]] [--backup-pg-log]\n"));
71+
printf(_(" [-j num-threads] [--archive-timeout=archive-timeout]\n"));
72+
printf(_(" [--progress] [-q] [-v] [--delete-expired]\n"));
73+
printf(_(" [-d dbname] [-h host] [-p port] [-U username]\n"));
74+
75+
printf(_("\n %s restore -B backup-dir\n"),PROGRAM_NAME);
76+
printf(_(" [-D pgdata-dir] [-i backup-id] [--progress] [-q] [-v]\n"));
77+
printf(_(" [--time=time|--xid=xid [--inclusive=boolean]]\n"));
78+
printf(_(" [--timeline=timeline] [-T OLDDIR=NEWDIR]\n"));
79+
80+
printf(_("\n %s validate -B backup-dir\n"),PROGRAM_NAME);
81+
printf(_(" [-D pgdata-dir] [-i backup-id] [--progress] [-q] [-v]\n"));
82+
printf(_(" [--time=time|--xid=xid [--inclusive=boolean]]\n"));
83+
printf(_(" [--timeline=timeline]\n"));
84+
85+
printf(_("\n %s show -B backup-dir\n"),PROGRAM_NAME);
86+
printf(_(" [-i backup-id]\n"));
87+
88+
printf(_("\n %s delete -B backup-dir\n"),PROGRAM_NAME);
89+
printf(_(" [--wal] [-i backup-id | --expired]\n"));
90+
91+
if ((PROGRAM_URL||PROGRAM_EMAIL))
92+
{
93+
printf("\n");
94+
if (PROGRAM_URL)
95+
printf("Read the website for details. <%s>\n",PROGRAM_URL);
96+
if (PROGRAM_EMAIL)
97+
printf("Report bugs to <%s>.\n",PROGRAM_EMAIL);
98+
}
99+
exit(0);
100+
}
101+
102+
staticvoid
103+
help_init(void)
104+
{
105+
printf(_("%s init -B backup-path -D pgdata-dir\n\n"),PROGRAM_NAME);
106+
printf(_(" -B, --backup-path=backup-path location of the backup storage area\n"));
107+
printf(_(" -D, --pgdata=pgdata-dir location of the database storage area\n"));
108+
}
109+
110+
staticvoid
111+
help_backup(void)
112+
{
113+
printf(_("%s backup -B backup-path -b backup-mode\n"),PROGRAM_NAME);
114+
printf(_(" [-D pgdata-dir] [-C] [--stream [-S slot-name]] [--backup-pg-log]\n"));
115+
printf(_(" [-j num-threads] [--archive-timeout=archive-timeout]\n"));
116+
printf(_(" [--progress] [-q] [-v] [--delete-expired]\n"));
117+
printf(_(" [-d dbname] [-h host] [-p port] [-U username]\n\n"));
118+
119+
printf(_(" -B, --backup-path=backup-path location of the backup storage area\n"));
120+
printf(_(" -b, --backup-mode=backup-mode backup mode=FULL|PAGE|PTRACK\n"));
121+
printf(_(" -D, --pgdata=pgdata-dir location of the database storage area\n"));
122+
printf(_(" -C, --smooth-checkpoint do smooth checkpoint before backup\n"));
123+
printf(_(" --stream stream the transaction log and include it in the backup\n"));
124+
printf(_(" --archive-timeout wait timeout for WAL segment archiving\n"));
125+
printf(_(" -S, --slot=SLOTNAME replication slot to use\n"));
126+
printf(_(" --backup-pg-log backup of pg_log directory\n"));
127+
printf(_(" -j, --threads=NUM number of parallel threads\n"));
128+
printf(_(" --progress show progress\n"));
129+
printf(_(" -q, --quiet don't write any messages\n"));
130+
printf(_(" -v, --verbose verbose mode\n"));
131+
printf(_(" --delete-expired delete backups expired according to current\n"));
132+
printf(_(" retention policy after successful backup completion\n"));
133+
134+
printf(_("\n Connection options:\n"));
135+
printf(_(" -d, --dbname=DBNAME database to connect\n"));
136+
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));
137+
printf(_(" -p, --port=PORT database server port\n"));
138+
printf(_(" -U, --username=USERNAME user name to connect as\n"));
139+
}
140+
141+
staticvoid
142+
help_restore(void)
143+
{
144+
printf(_("%s restore -B backup-dir\n"),PROGRAM_NAME);
145+
printf(_(" [-D pgdata-dir] [-i backup-id] [--progress] [-q] [-v]\n"));
146+
printf(_(" [--time=time|--xid=xid [--inclusive=boolean]]\n"));
147+
printf(_(" [--timeline=timeline] [-T OLDDIR=NEWDIR]\n\n"));
148+
149+
printf(_(" -B, --backup-path=backup-path location of the backup storage area\n"));
150+
printf(_(" -D, --pgdata=pgdata-dir location of the database storage area\n"));
151+
printf(_(" -i, --backup-id=backup-id backup to restore\n"));
152+
153+
printf(_(" --progress show progress\n"));
154+
printf(_(" -q, --quiet don't write any messages\n"));
155+
printf(_(" -v, --verbose verbose mode\n"));
156+
printf(_(" --time=time time stamp up to which recovery will proceed\n"));
157+
printf(_(" --xid=xid transaction ID up to which recovery will proceed\n"));
158+
printf(_(" --inclusive=boolean whether we stop just after the recovery target\n"));
159+
printf(_(" --timeline=timeline recovering into a particular timeline\n"));
160+
printf(_(" -T, --tablespace-mapping=OLDDIR=NEWDIR\n"));
161+
printf(_(" relocate the tablespace from directory OLDDIR to NEWDIR\n"));
162+
}
163+
164+
staticvoid
165+
help_validate(void)
166+
{
167+
printf(_("%s validate -B backup-dir\n"),PROGRAM_NAME);
168+
printf(_(" [-D pgdata-dir] [-i backup-id] [--progress] [-q] [-v]\n"));
169+
printf(_(" [--time=time|--xid=xid [--inclusive=boolean]]\n"));
170+
printf(_(" [--timeline=timeline]\n\n"));
171+
172+
printf(_(" -B, --backup-path=backup-path location of the backup storage area\n"));
173+
printf(_(" -D, --pgdata=pgdata-dir location of the database storage area\n"));
174+
printf(_(" -i, --backup-id=backup-id backup to validate\n"));
175+
176+
printf(_(" --progress show progress\n"));
177+
printf(_(" -q, --quiet don't write any messages\n"));
178+
printf(_(" -v, --verbose verbose mode\n"));
179+
printf(_(" --time=time time stamp up to which recovery will proceed\n"));
180+
printf(_(" --xid=xid transaction ID up to which recovery will proceed\n"));
181+
printf(_(" --inclusive=boolean whether we stop just after the recovery target\n"));
182+
printf(_(" --timeline=timeline recovering into a particular timeline\n"));
183+
}
184+
185+
staticvoid
186+
help_show(void)
187+
{
188+
printf(_("%s show -B backup-dir\n"),PROGRAM_NAME);
189+
printf(_(" [-i backup-id]\n\n"));
190+
191+
printf(_(" -B, --backup-path=backup-path location of the backup storage area\n"));
192+
printf(_(" -i, --backup-id=backup-id show info about specific backups\n"));
193+
}
194+
195+
staticvoid
196+
help_delete(void)
197+
{
198+
printf(_("%s delete -B backup-dir\n"),PROGRAM_NAME);
199+
printf(_(" [--wal] [-i backup-id | --expired]\n\n"));
200+
201+
printf(_(" -B, --backup-path=backup-path location of the backup storage area\n"));
202+
printf(_(" --wal remove unnecessary wal files\n"));
203+
printf(_(" -i, --backup-id=backup-id backup to delete\n"));
204+
printf(_(" --expired delete backups expired according to current\n"));
205+
printf(_(" retention policy\n"));
206+
}
207+
208+
staticvoid
209+
help_set_config(void)
210+
{
211+
printf(_("%s set-config -B backup-dir\n"),PROGRAM_NAME);
212+
printf(_(" [-d dbname] [-h host] [-p port] [-U username]\n"));
213+
printf(_(" [--retention-redundancy=retention-redundancy]]\n"));
214+
printf(_(" [--retention-window=retention-window]\n\n"));
215+
216+
printf(_(" -B, --backup-path=backup-path location of the backup storage area\n"));
217+
218+
printf(_("\n Connection options:\n"));
219+
printf(_(" -d, --dbname=DBNAME database to connect\n"));
220+
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));
221+
printf(_(" -p, --port=PORT database server port\n"));
222+
printf(_(" -U, --username=USERNAME user name to connect as\n"));
223+
224+
printf(_("\n Retention options:\n"));
225+
printf(_(" --retention-redundancy=retention-redundancy\n"));
226+
printf(_(" number of full backups to keep\n"));
227+
printf(_(" --retention-window=retention-window\n"));
228+
printf(_(" number of days of recoverability\n"));
229+
230+
}
231+
232+
staticvoid
233+
help_show_config(void)
234+
{
235+
printf(_("%s show-config -B backup-dir\n\n"),PROGRAM_NAME);
236+
237+
printf(_(" -B, --backup-path=backup-path location of the backup storage area\n"));
238+
}

‎parsexlog.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,8 +249,8 @@ validate_wal(pgBackup *backup,
249249
if (!xlogexists)
250250
elog(WARNING,"WAL segment \"%s\" is absent",xlogfpath);
251251
elseif (xlogreadfd!=-1)
252-
elog(WARNING,"error was occured during readingWALsegment \"%s\"",
253-
xlogfpath);
252+
elog(ERROR,"PossibleWALCORRUPTION."
253+
"Error has occured during reading WAL segment \"%s\"",xlogfpath);
254254
}
255255

256256
if (!got_endpoint)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp