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

Commit4d85b3e

Browse files
postgres-devkr1llin
authored andcommitted
Merge remote-tracking branch 'origin/REL_2_5'
2 parents8d13580 +ac92457 commit4d85b3e

File tree

4 files changed

+145
-11
lines changed

4 files changed

+145
-11
lines changed

‎doc/pgprobackup.xml‎

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -529,14 +529,14 @@ doc/src/sgml/pgprobackup.sgml
529529
<stepid="pbk-init-the-backup-catalog">
530530
<para>Initialize the backup catalog:</para>
531531
<programlistingid="pbk-init-the-backup-catalog-listing">
532-
backup_user@backup_host:~$ pg_probackup init -B /mnt/backups
532+
backup_user@backup_host:~$ pg_probackup-16 init -B /mnt/backups
533533
INFO: Backup catalog '/mnt/backups' successfully initialized
534534
</programlisting>
535535
</step>
536536
<stepid="pbk-add-instance-to-backup-catalog">
537537
<para>Add a backup instance called <literal>mydb</literal> to the backup catalog:</para>
538538
<programlistingid="pbk-add-instance-to-backup-catalog-listing">
539-
backup_user@backup_host:~$ pg_probackup add-instance \
539+
backup_user@backup_host:~$ pg_probackup-16 add-instance \
540540
-B /mnt/backups \
541541
-D /var/lib/pgpro/std-16/data \
542542
--instance=node \
@@ -548,7 +548,7 @@ INFO: Instance 'node' successfully initialized
548548
<stepid="pbk-make-full-backup">
549549
<para>Make a FULL backup:</para>
550550
<programlistingid="pbk-make-full-backup-listing">
551-
backup_user@backup_host:~$ pg_probackup backup \
551+
backup_user@backup_host:~$ pg_probackup-16 backup \
552552
-B /mnt/backups \
553553
-b FULL \
554554
--instance=node \
@@ -582,7 +582,7 @@ INFO: Backup SCUN1Q completed
582582
<stepid="pbk-list-backups">
583583
<para>List the backups of the instance:</para>
584584
<programlistingid="pbk-list-backups-listing">
585-
backup_user@backup_host:~$ pg_probackup show \
585+
backup_user@backup_host:~$ pg_probackup-16 show \
586586
-B /mnt/backups \
587587
--instance=node
588588
================================================================================================================================
@@ -594,7 +594,7 @@ backup_user@backup_host:~$ pg_probackup show \
594594
<stepid="pbk-make-incremental-backup-in-delta-mode">
595595
<para>Make an incremental backup in the DELTA mode:</para>
596596
<programlistingid="pbk-make-incremental-backup-in-delta-mode-listing">
597-
backup_user@backup_host:~$ pg_probackup backup \
597+
backup_user@backup_host:~$ pg_probackup-16 backup \
598598
-B /mnt/backups \
599599
-b DELTA \
600600
--instance=node \
@@ -631,7 +631,7 @@ INFO: Backup SCUN22 completed
631631
<para>Add or modify some parameters in the <application>pg_probackup</application>
632632
configuration file, so that you do not have to specify them each time on the command line:</para>
633633
<programlistingid="pbk-save-config-parameters-listing">
634-
backup_user@backup_host:~$ pg_probackup set-config \
634+
backup_user@backup_host:~$ pg_probackup-16 set-config \
635635
-B /mnt/backups \
636636
--instance=node \
637637
--remote-host=postgres_host \
@@ -643,7 +643,7 @@ backup_user@backup_host:~$ pg_probackup set-config \
643643
<stepid="pbk-print-instance-config">
644644
<para>Check the configuration of the instance:</para>
645645
<programlistingid="pbk-print-instance-config-listing">
646-
backup_user@backup_host:~$ pg_probackup show-config \
646+
backup_user@backup_host:~$ pg_probackup-16 show-config \
647647
-B /mnt/backups \
648648
--instance=node
649649
# Backup instance information
@@ -686,7 +686,7 @@ remote-user = postgres
686686
<para>Make another incremental backup in the DELTA mode, omitting
687687
the parameters stored in the configuration file earlier:</para>
688688
<programlistingid="pbk-make-another-incremental-backup-in-delta-mode-using-saved-parameters-listing">
689-
backup_user@backup_host:~$ pg_probackup backup \
689+
backup_user@backup_host:~$ pg_probackup-16 backup \
690690
-B /mnt/backups \
691691
-b DELTA \
692692
--instance=node \
@@ -718,7 +718,7 @@ INFO: Backup SCUN2C completed
718718
<stepid="pbk-list-backups-again">
719719
<para>List the backups of the instance again:</para>
720720
<programlistingid="pbk-list-backups-again-listing">
721-
backup_user@backup_host:~$ pg_probackup show \
721+
backup_user@backup_host:~$ pg_probackup-16 show \
722722
-B /mnt/backups \
723723
--instance=node
724724
===================================================================================================================================
@@ -732,7 +732,7 @@ backup_user@backup_host:~$ pg_probackup show \
732732
<stepid="pbk-quickstart-restore">
733733
<para>Restore the data from the latest available backup to an arbitrary location:</para>
734734
<programlistingid="pbk-quickstart-restore-listing">
735-
backup_user@backup_host:~$ pg_probackup restore \
735+
backup_user@backup_host:~$ pg_probackup-16 restore \
736736
-B /mnt/backups \
737737
-D /var/lib/pgpro/std-16/staging-data \
738738
--instance=node
@@ -2332,7 +2332,7 @@ pg_probackup restore -B <replaceable>backup_dir</replaceable> --instance=<replac
23322332
node 16 SCUN39 2024-05-02 11:18:50+03 PAGE STREAM 15/15 12s 46MB 32MB 1.44 0/2A000028 0/2B0000B8 OK
23332333
node 16 SCUN2V 2024-05-02 11:18:38+03 FULL STREAM 15/0 11s 154MB 16MB 2.32 0/23000028 0/23000168 OK
23342334

2335-
backup_user@backup_host:~$ pg_probackup restore -B /mnt/backups --instance=node -R -I lsn
2335+
backup_user@backup_host:~$ pg_probackup-16 restore -B /mnt/backups --instance=node -R -I lsn
23362336
INFO: Destination directory and tablespace directories are empty, disable incremental restore
23372337
INFO: Validating parents for backup SCUN3Y
23382338
INFO: Validating backup SCUN2V

‎src/data.c‎

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -794,6 +794,14 @@ backup_non_data_file(pgFile *file, pgFile *prev_file,
794794
return;
795795
}
796796

797+
/* special treatment for global/ptrack.map */
798+
if (strcmp(file->name,"ptrack.map")==0)
799+
{
800+
copy_ptrackmap_file(from_fullpath,FIO_DB_HOST,
801+
to_fullpath,FIO_BACKUP_HOST,file);
802+
return;
803+
}
804+
797805
/*
798806
* If non-data file exists in previous backup
799807
* and its mtime is less than parent backup start time ... */
@@ -1383,6 +1391,43 @@ restore_non_data_file(parray *parent_chain, pgBackup *dest_backup,
13831391
elog(ERROR,"Cannot close file \"%s\": %s",from_fullpath,
13841392
strerror(errno));
13851393

1394+
1395+
/* We have to decompress ptrack.map */
1396+
if (tmp_backup->compress_alg>NONE_COMPRESS&&strcmp(tmp_file->name,"ptrack.map")==0){
1397+
1398+
/* do decompression */
1399+
char*buffer;
1400+
size_tsize;
1401+
1402+
constchar*errormsg=NULL;
1403+
buffer=slurpFile(to_fullpath,"",&size, false,FIO_DB_HOST);// not sure about to_location
1404+
1405+
size_tdecompressed_size=tmp_file->size*2;
1406+
void*decompressed=pg_malloc(decompressed_size);
1407+
1408+
intrc=do_decompress(decompressed,decompressed_size,buffer,size,tmp_backup->compress_alg,&errormsg);
1409+
1410+
/* Something went wrong and errormsg was assigned, throw a warning */
1411+
if (rc<0&&errormsg!=NULL)
1412+
elog(WARNING,"An error occured during compressing ptrack.map: %s",errormsg);
1413+
1414+
/* decompression didn't worked */
1415+
if (rc <=0)
1416+
{
1417+
elog(ERROR,"An error occured during decompression of ptrack.map: %s",errormsg);
1418+
pg_free(buffer);
1419+
pg_free(decompressed);
1420+
}
1421+
else {
1422+
decompressed_size=rc;
1423+
}
1424+
1425+
writePtrackMap(decompressed,decompressed_size,to_fullpath,FIO_DB_HOST);
1426+
1427+
pg_free(decompressed);
1428+
pg_free(buffer);
1429+
}
1430+
13861431
returntmp_file->write_size;
13871432
}
13881433

‎src/pg_probackup.h‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1214,6 +1214,8 @@ extern void get_control_file_or_back_file(const char *pgdata_path, fio_location
12141214
ControlFileData*control);
12151215
externvoidcopy_pgcontrol_file(constchar*from_fullpath,fio_locationfrom_location,
12161216
constchar*to_fullpath,fio_locationto_location,pgFile*file);
1217+
externvoidcopy_ptrackmap_file(constchar*from_fullpath,fio_locationfrom_location,
1218+
constchar*to_fullpath,fio_locationto_location,pgFile*file);
12171219

12181220
externvoidtime2iso(char*buf,size_tlen,time_ttime,boolutc);
12191221
externconstchar*status2str(BackupStatusstatus);
@@ -1238,6 +1240,9 @@ extern PGconn *pgdata_basic_setup(ConnectionOptions conn_opt, PGNodeInfo *nodeIn
12381240
externvoidcheck_system_identifiers(PGconn*conn,constchar*pgdata);
12391241
externvoidparse_filelist_filenames(parray*files,constchar*root);
12401242

1243+
externvoidwritePtrackMap(constchar*ptrackMap,constsize_tptrackmap_size,
1244+
constchar*path,fio_locationlocation);
1245+
12411246
/* in ptrack.c */
12421247
externvoidmake_pagemap_from_ptrack_2(parray*files,PGconn*backup_conn,
12431248
constchar*ptrack_schema,

‎src/util.c‎

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,90 @@ copy_pgcontrol_file(const char *from_fullpath, fio_location from_location,
454454
pg_free(buffer);
455455
}
456456

457+
/*
458+
* Write page_map_entry to ptrackMap
459+
*/
460+
void
461+
writePtrackMap(constchar*ptrackMap,constsize_tptrackmap_size,
462+
constchar*path,fio_locationlocation)
463+
{
464+
intfd;
465+
char*buffer=NULL;
466+
467+
// checks?
468+
469+
/* copy ptrackMap */
470+
buffer=pg_malloc0(ptrackmap_size);
471+
memcpy(buffer,ptrackMap,ptrackmap_size);
472+
473+
/* Write ptrackMap */
474+
fd=fio_open(path,
475+
O_RDWR |O_CREAT |O_TRUNC |PG_BINARY,location);
476+
477+
if (fd<0) {
478+
elog(ERROR,"Failed to open file: %s",path);
479+
}
480+
481+
if (fio_write(fd,buffer,ptrackmap_size)!=ptrackmap_size) {
482+
elog(ERROR,"Failed to overwrite file: %s",path);
483+
}
484+
485+
if (fio_flush(fd)!=0) {
486+
elog(ERROR,"Failed to sync file: %s",path);
487+
}
488+
489+
fio_close(fd);
490+
pg_free(buffer);
491+
}
492+
493+
/*
494+
* Copy ptrack.map file to backup. We do apply compression to this file.
495+
*/
496+
voidcopy_ptrackmap_file(constchar*from_fullpath,fio_locationfrom_location,
497+
constchar*to_fullpath,fio_locationto_location,
498+
pgFile*file) {
499+
char*buffer;
500+
size_tsize;
501+
502+
boolmissing_ok= true;
503+
booluse_crc32c= true;
504+
505+
constchar*errormsg=NULL;
506+
507+
buffer=slurpFile(from_fullpath,"",&size, false,from_location);
508+
509+
size_tcompressed_size=size;
510+
void*compressed=pg_malloc(compressed_size);
511+
512+
intrc=do_compress(compressed,compressed_size,buffer,size,
513+
current.compress_alg,current.compress_level,&errormsg);
514+
515+
/* Something went wrong and errormsg was assigned, throw a warning */
516+
if (rc<0&&errormsg!=NULL)
517+
elog(WARNING,"An error occured during compressing ptrack.map: %s",
518+
errormsg);
519+
520+
/* compression didn`t worked */
521+
if (rc <=0||rc >=size) {
522+
/* Do not compress ptrack.map */
523+
memcpy(compressed,buffer,size);
524+
}else {
525+
compressed_size=rc;
526+
}
527+
528+
writePtrackMap(compressed,compressed_size,to_fullpath,to_location);
529+
530+
file->crc=pgFileGetCRCgz(to_fullpath,use_crc32c,missing_ok);;
531+
file->size=compressed_size;
532+
file->read_size=size;
533+
file->write_size=compressed_size;
534+
file->uncompressed_size=size;
535+
file->compress_alg=current.compress_alg;
536+
537+
pg_free(compressed);
538+
pg_free(buffer);
539+
}
540+
457541
/*
458542
* Parse string representation of the server version.
459543
*/

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp