public inbox for [email protected]  
help / color / mirror / Atom feed
How to recover correctly master and replica using backup made by pg_basebackup?
2+ messages / 1 participants
[nested] [flat]

* How to recover correctly master and replica using backup made by pg_basebackup?
@ 2024-11-07 19:19  Evgeniy Ratkov <[email protected]>
  0 siblings, 1 reply; 2+ messages in thread

From: Evgeniy Ratkov @ 2024-11-07 19:19 UTC (permalink / raw)
  To: pgsql-general

Hello.

I try to use pg_basebackup to make backup and recover master and replica 
from it.
I recover master with action "promote". Next, I recover replica from the 
same
backup with action "shutdown". After it, I start replica with configured 
connection
and replication slot to the master. I get error, because replica reads 
and applies
all WAL of irrelevant timeline, which contains logs after restore point.

I wrote Perl script for pg_basebackup's TAP tests. It is attached as 
file "050_check_replication.pl".
It works on PostgreSQL 17, commit 
7d85d87f4d5c35fd5b2d38adaef63dfbfa542ccc after
applying small patch, which adds possibility to start node with shutdown 
option.
Patch is attached as file "add_node_start_with_shutdown.diff".

Script generates situation when timeline changes several times. Small 
schema may
explain it:

Timeline 1:
   Create the first backup
   Create restore point 'rp_repl_bug'
Timeline 1 -> 2:
   Recovery with promote using the first backup and 'rp_repl_bug'
   Create the second backup
   Create restore point 'rp_repl_bug2'
Timeline 2 -> 3:
   Recovery with promote using the second backup and 'rp_repl_bug2'
Timeline 1 -> 4:
   Recovery with promote using the first backup and 'rp_repl_bug'

After it I get "00000004.history" file, which looks strange:
1    0/3000090    at restore point "rp_repl_bug"
2    0/5000090    at restore point "rp_repl_bug2"
3    0/3000090    at restore point "rp_repl_bug"

Next, I try to restore replica from the first backup. Replica did not 
find WAL for
timeline 4 and downloaded and applied WAL for timeline 2.

cp: cannot stat '${ARCHIVE_PATH}/000000040000000000000003': No such file 
or directory
LOG:  redo starts at 0/2000028
cp: cannot stat '${ARCHIVE_PATH}/000000040000000000000003': No such file 
or directory
'${ARCHIVE_PATH}/000000020000000000000003' -> 
'${REPLICA_PGDATA}/pg_wal/RECOVERYXLOG'
LOG:  restored log file "000000020000000000000003" from archive
LOG:  completed backup recovery with redo LSN 0/2000028 and end LSN 
0/2000120
LOG:  consistent recovery state reached at 0/2000120
LOG:  recovery stopping at restore point "rp_repl_bug", time 2024-11-05 
22:00:16.037126+03

Than, at the next replica's start (with configured connection to the 
master and
replication slot) replica can not start receiving WAL from master, 
because it
applied all WAL from timeline 2 including all lines after LSN, where it 
should
switch timeline:

LOG:  entering standby mode
LOG:  redo starts at 0/2000028
LOG:  consistent recovery state reached at 0/3000090
LOG:  database system is ready to accept read-only connections
LOG:  started streaming WAL from primary at 0/4000000 on timeline 4
FATAL:  could not receive data from WAL stream: ERROR:  requested 
starting point 0/4000000 is ahead of the WAL flush position of this 
server 0/3002000

If I restart replica, it will not start:
LOG:  database system was shut down in recovery at 2024-11-05 22:00:18 MSK
LOG:  entering standby mode
FATAL:  requested timeline 4 is not a child of this server's history
DETAIL:  Latest checkpoint is at 0/3000090 on timeline 2, but in the 
history of the requested timeline, the server forked off from that 
timeline at 0/5000090.
LOG:  startup process (PID 2384880) exited with exit code 1

Questions:

1) Why does mirror not switch to the next timeline when it get LSN in 
WAL, which
there is in the history file? And why does mirror apply all WAL?
2) Why does 00000004.history contain info about switching from 2 and 3 
timelines
even if the 4 timeline was switched from the first timeline?

Thank you in advance.


Attachments:

  [text/x-patch] add_node_start_with_shutdown.diff (735B, 2-add_node_start_with_shutdown.diff)
  download | inline diff:
diff --git a/src/test/perl/PostgreSQL/Test/Cluster.pm b/src/test/perl/PostgreSQL/Test/Cluster.pm
index 007571e948..e18eb3aace 100644
--- a/src/test/perl/PostgreSQL/Test/Cluster.pm
+++ b/src/test/perl/PostgreSQL/Test/Cluster.pm
@@ -1112,7 +1112,7 @@ instead return a true or false value to indicate success or failure.
 
 =cut
 
-sub start
+sub _start
 {
 	my ($self, %params) = @_;
 	my $port = $self->port;
@@ -1150,11 +1150,23 @@ sub start
 		BAIL_OUT("pg_ctl start failed") unless $params{fail_ok};
 		return 0;
 	}
+}
 
+sub start
+{
+	my ($self) = @_;
+	$self->_start;
 	$self->_update_pid(1);
 	return 1;
 }
 
+sub start_with_enabled_shutdown
+{
+	my ($self) = @_;
+	$self->_start;
+	return 1;
+}
+
 =pod
 
 =item $node->kill9()


  [application/x-perl] 050_check_replication.pl (5.4K, 3-050_check_replication.pl)
  download

^ permalink  raw  reply  [nested|flat] 2+ messages in thread

* Re: How to recover correctly master and replica using backup made by pg_basebackup?
@ 2025-03-18 13:02  Evgeniy Ratkov <[email protected]>
  parent: Evgeniy Ratkov <[email protected]>
  0 siblings, 0 replies; 2+ messages in thread

From: Evgeniy Ratkov @ 2025-03-18 13:02 UTC (permalink / raw)
  To: pgsql-general


------==--bound.497430.sjg23nxaikj7vz54.iva.yp-c.yandex.net
Content-Transfer-Encoding: base64
Content-Type: text/html; charset=utf-8

PGRpdj48ZGl2Pk9uIDA3LzExLzIwMjQgMjI6MTksIEV2Z2VuaXkgUmF0a292IHdyb3RlOjwvZGl2
PjwvZGl2PjxibG9ja3F1b3RlPjxwPkhlbGxvLjxiciAvPjxiciAvPkkgdHJ5IHRvIHVzZSBwZ19i
YXNlYmFja3VwIHRvIG1ha2UgYmFja3VwIGFuZCByZWNvdmVyIG1hc3RlciBhbmQgcmVwbGljYTxi
ciAvPmZyb20gaXQuPGJyIC8+SSByZWNvdmVyIG1hc3RlciB3aXRoIGFjdGlvbiAicHJvbW90ZSIu
IE5leHQsIEkgcmVjb3ZlciByZXBsaWNhIGZyb20gdGhlPGJyIC8+c2FtZTxiciAvPmJhY2t1cCB3
aXRoIGFjdGlvbiAic2h1dGRvd24iLiBBZnRlciBpdCwgSSBzdGFydCByZXBsaWNhIHdpdGggY29u
ZmlndXJlZDxiciAvPmNvbm5lY3Rpb248YnIgLz5hbmQgcmVwbGljYXRpb24gc2xvdCB0byB0aGUg
bWFzdGVyLiBJIGdldCBlcnJvciwgYmVjYXVzZSByZXBsaWNhIHJlYWRzPGJyIC8+YW5kIGFwcGxp
ZXM8YnIgLz5hbGwgV0FMIG9mIGlycmVsZXZhbnQgdGltZWxpbmUsIHdoaWNoIGNvbnRhaW5zIGxv
Z3MgYWZ0ZXIgcmVzdG9yZSBwb2ludC48YnIgLz48YnIgLz5JIHdyb3RlIFBlcmwgc2NyaXB0IGZv
ciBwZ19iYXNlYmFja3VwJ3MgVEFQIHRlc3RzLiBJdCBpcyBhdHRhY2hlZCBhczxiciAvPmZpbGUg
IjA1MF9jaGVja19yZXBsaWNhdGlvbi5wbCIuPGJyIC8+SXQgd29ya3Mgb24gUG9zdGdyZVNRTCAx
NywgY29tbWl0PGJyIC8+N2Q4NWQ4N2Y0ZDVjMzVmZDViMmQzOGFkYWVmNjNkZmJmYTU0MmNjYyBh
ZnRlcjxiciAvPmFwcGx5aW5nIHNtYWxsIHBhdGNoLCB3aGljaCBhZGRzIHBvc3NpYmlsaXR5IHRv
IHN0YXJ0IG5vZGUgd2l0aCBzaHV0ZG93bjxiciAvPm9wdGlvbi48YnIgLz5QYXRjaCBpcyBhdHRh
Y2hlZCBhcyBmaWxlICJhZGRfbm9kZV9zdGFydF93aXRoX3NodXRkb3duLmRpZmYiLjxiciAvPjxi
ciAvPlNjcmlwdCBnZW5lcmF0ZXMgc2l0dWF0aW9uIHdoZW4gdGltZWxpbmUgY2hhbmdlcyBzZXZl
cmFsIHRpbWVzLiBTbWFsbDxiciAvPnNjaGVtYSBtYXk8YnIgLz5leHBsYWluIGl0OjxiciAvPjxi
ciAvPlRpbWVsaW5lIDE6PGJyIC8+wqDCoCBDcmVhdGUgdGhlIGZpcnN0IGJhY2t1cDxiciAvPsKg
wqAgQ3JlYXRlIHJlc3RvcmUgcG9pbnQgJ3JwX3JlcGxfYnVnJzxiciAvPlRpbWVsaW5lIDEgLSZn
dDsgMjo8YnIgLz7CoMKgIFJlY292ZXJ5IHdpdGggcHJvbW90ZSB1c2luZyB0aGUgZmlyc3QgYmFj
a3VwIGFuZCAncnBfcmVwbF9idWcnPGJyIC8+wqDCoCBDcmVhdGUgdGhlIHNlY29uZCBiYWNrdXA8
YnIgLz7CoMKgIENyZWF0ZSByZXN0b3JlIHBvaW50ICdycF9yZXBsX2J1ZzInPGJyIC8+VGltZWxp
bmUgMiAtJmd0OyAzOjxiciAvPsKgwqAgUmVjb3Zlcnkgd2l0aCBwcm9tb3RlIHVzaW5nIHRoZSBz
ZWNvbmQgYmFja3VwIGFuZCAncnBfcmVwbF9idWcyJzxiciAvPlRpbWVsaW5lIDEgLSZndDsgNDo8
YnIgLz7CoMKgIFJlY292ZXJ5IHdpdGggcHJvbW90ZSB1c2luZyB0aGUgZmlyc3QgYmFja3VwIGFu
ZCAncnBfcmVwbF9idWcnPGJyIC8+PGJyIC8+QWZ0ZXIgaXQgSSBnZXQgIjAwMDAwMDA0Lmhpc3Rv
cnkiIGZpbGUsIHdoaWNoIGxvb2tzIHN0cmFuZ2U6PGJyIC8+McKgwqDCoCAwLzMwMDAwOTDCoMKg
wqAgYXQgcmVzdG9yZSBwb2ludCAicnBfcmVwbF9idWciPGJyIC8+MsKgwqDCoCAwLzUwMDAwOTDC
oMKgwqAgYXQgcmVzdG9yZSBwb2ludCAicnBfcmVwbF9idWcyIjxiciAvPjPCoMKgwqAgMC8zMDAw
MDkwwqDCoMKgIGF0IHJlc3RvcmUgcG9pbnQgInJwX3JlcGxfYnVnIjxiciAvPjxiciAvPk5leHQs
IEkgdHJ5IHRvIHJlc3RvcmUgcmVwbGljYSBmcm9tIHRoZSBmaXJzdCBiYWNrdXAuIFJlcGxpY2Eg
ZGlkIG5vdDxiciAvPmZpbmQgV0FMIGZvcjxiciAvPnRpbWVsaW5lIDQgYW5kIGRvd25sb2FkZWQg
YW5kIGFwcGxpZWQgV0FMIGZvciB0aW1lbGluZSAyLjxiciAvPjxiciAvPmNwOiBjYW5ub3Qgc3Rh
dCAnJHtBUkNISVZFX1BBVEh9LzAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMyc6IE5vIHN1Y2ggZmls
ZTxiciAvPm9yIGRpcmVjdG9yeTxiciAvPkxPRzrCoCByZWRvIHN0YXJ0cyBhdCAwLzIwMDAwMjg8
YnIgLz5jcDogY2Fubm90IHN0YXQgJyR7QVJDSElWRV9QQVRIfS8wMDAwMDAwNDAwMDAwMDAwMDAw
MDAwMDMnOiBObyBzdWNoIGZpbGU8YnIgLz5vciBkaXJlY3Rvcnk8YnIgLz4nJHtBUkNISVZFX1BB
VEh9LzAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMycgLSZndDs8YnIgLz4nJHtSRVBMSUNBX1BHREFU
QX0vcGdfd2FsL1JFQ09WRVJZWExPRyc8YnIgLz5MT0c6wqAgcmVzdG9yZWQgbG9nIGZpbGUgIjAw
MDAwMDAyMDAwMDAwMDAwMDAwMDAwMyIgZnJvbSBhcmNoaXZlPGJyIC8+TE9HOsKgIGNvbXBsZXRl
ZCBiYWNrdXAgcmVjb3Zlcnkgd2l0aCByZWRvIExTTiAwLzIwMDAwMjggYW5kIGVuZCBMU048YnIg
Lz4wLzIwMDAxMjA8YnIgLz5MT0c6wqAgY29uc2lzdGVudCByZWNvdmVyeSBzdGF0ZSByZWFjaGVk
IGF0IDAvMjAwMDEyMDxiciAvPkxPRzrCoCByZWNvdmVyeSBzdG9wcGluZyBhdCByZXN0b3JlIHBv
aW50ICJycF9yZXBsX2J1ZyIsIHRpbWUgMjAyNC0xMS0wNTxiciAvPjIyOjAwOjE2LjAzNzEyNisw
MzxiciAvPjxiciAvPlRoYW4sIGF0IHRoZSBuZXh0IHJlcGxpY2EncyBzdGFydCAod2l0aCBjb25m
aWd1cmVkIGNvbm5lY3Rpb24gdG8gdGhlPGJyIC8+bWFzdGVyIGFuZDxiciAvPnJlcGxpY2F0aW9u
IHNsb3QpIHJlcGxpY2EgY2FuIG5vdCBzdGFydCByZWNlaXZpbmcgV0FMIGZyb20gbWFzdGVyLDxi
ciAvPmJlY2F1c2UgaXQ8YnIgLz5hcHBsaWVkIGFsbCBXQUwgZnJvbSB0aW1lbGluZSAyIGluY2x1
ZGluZyBhbGwgbGluZXMgYWZ0ZXIgTFNOLCB3aGVyZSBpdDxiciAvPnNob3VsZDxiciAvPnN3aXRj
aCB0aW1lbGluZTo8YnIgLz48YnIgLz5MT0c6wqAgZW50ZXJpbmcgc3RhbmRieSBtb2RlPGJyIC8+
TE9HOsKgIHJlZG8gc3RhcnRzIGF0IDAvMjAwMDAyODxiciAvPkxPRzrCoCBjb25zaXN0ZW50IHJl
Y292ZXJ5IHN0YXRlIHJlYWNoZWQgYXQgMC8zMDAwMDkwPGJyIC8+TE9HOsKgIGRhdGFiYXNlIHN5
c3RlbSBpcyByZWFkeSB0byBhY2NlcHQgcmVhZC1vbmx5IGNvbm5lY3Rpb25zPGJyIC8+TE9HOsKg
IHN0YXJ0ZWQgc3RyZWFtaW5nIFdBTCBmcm9tIHByaW1hcnkgYXQgMC80MDAwMDAwIG9uIHRpbWVs
aW5lIDQ8YnIgLz5GQVRBTDrCoCBjb3VsZCBub3QgcmVjZWl2ZSBkYXRhIGZyb20gV0FMIHN0cmVh
bTogRVJST1I6wqAgcmVxdWVzdGVkPGJyIC8+c3RhcnRpbmcgcG9pbnQgMC80MDAwMDAwIGlzIGFo
ZWFkIG9mIHRoZSBXQUwgZmx1c2ggcG9zaXRpb24gb2YgdGhpczxiciAvPnNlcnZlciAwLzMwMDIw
MDA8YnIgLz48YnIgLz5JZiBJIHJlc3RhcnQgcmVwbGljYSwgaXQgd2lsbCBub3Qgc3RhcnQ6PGJy
IC8+TE9HOsKgIGRhdGFiYXNlIHN5c3RlbSB3YXMgc2h1dCBkb3duIGluIHJlY292ZXJ5IGF0IDIw
MjQtMTEtMDUgMjI6MDA6MTggTVNLPGJyIC8+TE9HOsKgIGVudGVyaW5nIHN0YW5kYnkgbW9kZTxi
ciAvPkZBVEFMOsKgIHJlcXVlc3RlZCB0aW1lbGluZSA0IGlzIG5vdCBhIGNoaWxkIG9mIHRoaXMg
c2VydmVyJ3MgaGlzdG9yeTxiciAvPkRFVEFJTDrCoCBMYXRlc3QgY2hlY2twb2ludCBpcyBhdCAw
LzMwMDAwOTAgb24gdGltZWxpbmUgMiwgYnV0IGluIHRoZTxiciAvPmhpc3Rvcnkgb2YgdGhlIHJl
cXVlc3RlZCB0aW1lbGluZSwgdGhlIHNlcnZlciBmb3JrZWQgb2ZmIGZyb20gdGhhdDxiciAvPnRp
bWVsaW5lIGF0IDAvNTAwMDA5MC48YnIgLz5MT0c6wqAgc3RhcnR1cCBwcm9jZXNzIChQSUQgMjM4
NDg4MCkgZXhpdGVkIHdpdGggZXhpdCBjb2RlIDE8YnIgLz48YnIgLz5RdWVzdGlvbnM6PGJyIC8+
PGJyIC8+MSkgV2h5IGRvZXMgbWlycm9yIG5vdCBzd2l0Y2ggdG8gdGhlIG5leHQgdGltZWxpbmUg
d2hlbiBpdCBnZXQgTFNOIGluPGJyIC8+V0FMLCB3aGljaDxiciAvPnRoZXJlIGlzIGluIHRoZSBo
aXN0b3J5IGZpbGU/IEFuZCB3aHkgZG9lcyBtaXJyb3IgYXBwbHkgYWxsIFdBTD88YnIgLz4yKSBX
aHkgZG9lcyAwMDAwMDAwNC5oaXN0b3J5IGNvbnRhaW4gaW5mbyBhYm91dCBzd2l0Y2hpbmcgZnJv
bSAyIGFuZCAzPGJyIC8+dGltZWxpbmVzPGJyIC8+ZXZlbiBpZiB0aGUgNCB0aW1lbGluZSB3YXMg
c3dpdGNoZWQgZnJvbSB0aGUgZmlyc3QgdGltZWxpbmU/PGJyIC8+PGJyIC8+VGhhbmsgeW91IGlu
IGFkdmFuY2UuPC9wPjwvYmxvY2txdW90ZT48ZGl2PsKgPC9kaXY+PGRpdj48ZGl2PjxkaXY+VGhl
cmUgaXMgSGVpa2tpIExpbm5ha2FuZ2FzJ3MgcGF0Y2g6PC9kaXY+PGRpdj4wMDAzLURvbi10LXJl
YWQtcGFzdC1jdXJyZW50LVRMSS1kdXJpbmctYXJjaGl2ZS1yZWNvdmVyeS5wYXRjaCBmcm9tPC9k
aXY+PGRpdj5odHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZlN2FmODdkLWI5
YmYtNDgxYS05MDJjLTA4OWM0OWFhOTExZCU0MGlraS5maS48L2Rpdj48ZGl2Pkl0IGZpeGVzIG15
IHByb2JsZW0gd2l0aCByZWNvdmVyeSBiYWNrdXAgb24gc3RhbmRieS48L2Rpdj48ZGl2PsKgPC9k
aXY+PGRpdj5JIHJlZmFjdG9yZWQgdGhlIHRlc3QsIHdoaWNoIG1heSBzaG93IHRoZSBwcm9ibGVt
LiBUaGUgdGVzdCBwYXNzZWQ8L2Rpdj48ZGl2PndpdGggSGVpa2tpIExpbm5ha2FuZ2FzJ3MgcGF0
Y2guIFdpdGhvdXQgcGF0Y2ggaXQgZmFpbHMgd2l0aCBlcnJvcjo8L2Rpdj48ZGl2PiJGQVRBTDog
wqBjb3VsZCBub3QgcmVjZWl2ZSBkYXRhIGZyb20gV0FMIHN0cmVhbTogRVJST1I6IMKgcmVxdWVz
dGVkPC9kaXY+PGRpdj5zdGFydGluZyBwb2ludCAwLzQwMDAwMDAgaXMgYWhlYWQgb2YgdGhlIFdB
TCBmbHVzaCBwb3NpdGlvbiBvZiB0aGlzPC9kaXY+PGRpdj5zZXJ2ZXIgMC8zMDAyMDAwIi48L2Rp
dj48ZGl2PsKgPC9kaXY+PGRpdj5UaGUgdGVzdCBpcyBhdHRhY2hlZCBhcyAiMDUwX2NoZWNrX3Jl
Y292ZXJ5X2JhY2t1cC5wbCIuIEkgYWRkZWQ8L2Rpdj48ZGl2PnRoZSB0ZXN0IHRvICJzcmMvdGVz
dC9yZWNvdmVyeS90IiBkaXJlY3RvcnkuPC9kaXY+PGRpdj7CoDwvZGl2PjxkaXY+VGhhbmsgeW91
LjwvZGl2PjxkaXY+wqA8L2Rpdj48ZGl2Pi0tPC9kaXY+PGRpdj5Fdmdlbml5IFJhdGtvdjwvZGl2
PjwvZGl2PjwvZGl2Pg==
------==--bound.497430.sjg23nxaikj7vz54.iva.yp-c.yandex.net
Content-Disposition: attachment;
	filename="050_check_recovery_backup.pl"
Content-Transfer-Encoding: base64
Content-Type: application/octet-stream;
	name="050_check_recovery_backup.pl"

dXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgRmlsZTo6QmFzZW5hbWUgcXcoYmFzZW5hbWUg
ZGlybmFtZSk7CnVzZSBGaWxlOjpDb21wYXJlOwp1c2UgRmlsZTo6UGF0aCBxdyhybXRyZWUpOwoK
dXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CnVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGls
czsKdXNlIFRlc3Q6Ok1vcmU7CgojIFNldCB1bWFzayBzbyB0ZXN0IGRpcmVjdG9yaWVzIGFuZCBm
aWxlcyBhcmUgY3JlYXRlZCB3aXRoIGRlZmF1bHQgcGVybWlzc2lvbnMKdW1hc2soMDA3Nyk7Cgpt
eSAkdGVtcGRpciA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0ZW1wZGlyOwpteSAkYmFzZWJh
Y2t1cGRpcjEgPSAkdGVtcGRpciAuICcvYmFzZWJhY2t1cDEnOwpteSAkYmFzZWJhY2t1cGRpcjIg
PSAkdGVtcGRpciAuICcvYmFzZWJhY2t1cDInOwpteSAkYXJjaGl2ZWRpciA9ICAkdGVtcGRpciAu
ICcvYXJjaGl2ZSc7CgpteSAkcHJpbWFyeSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5l
dygncHJpbWFyeScpOwpteSAkc3RhbmRieSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5l
dygnc3RhbmRieScpOwoKc3ViIGNyZWF0ZV9iYWNrdXBfcHJpbWFyeQp7CglteSAoJGJhY2t1cF9k
aXIsICRyZXN0b3JlX3BvaW50KSA9IEBfOwoKCXByaW50KCJSdW5uaW5nOiBjcmVhdGVfYmFja3Vw
X3ByaW1hcnk6ICckcmVzdG9yZV9wb2ludCdcbiIpOwoKCSRwcmltYXJ5LT5jb21tYW5kX29rKFsg
J3JtJywgJy1yZicsICRiYWNrdXBfZGlyIF0sCgkJImNsZWFyIGRpcmVjdG9yeSBmb3IgYmFja3Vw
ICckYmFja3VwX2RpciciKTsKCW1rZGlyKCRiYWNrdXBfZGlyKTsKCgkkcHJpbWFyeS0+Y29tbWFu
ZF9vayhbICdwZ19iYXNlYmFja3VwJywgJy1EJywgIiRiYWNrdXBfZGlyIiwgJy1wJywgJHByaW1h
cnktPnBvcnQsICctLXZlcmJvc2UnIF0sCgkJJ3BnX2Jhc2ViYWNrdXAgcnVucycpOwoJb2soLWYg
IiRiYWNrdXBfZGlyL1BHX1ZFUlNJT04iLCAiYmFja3VwIHdhcyBjcmVhdGVkIGF0ICckYmFja3Vw
X2RpciciKTsKCgkkcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0X2RiJywgIlNFTEVDVCBwZ19jcmVh
dGVfcmVzdG9yZV9wb2ludCgnJHJlc3RvcmVfcG9pbnQnKSIpOwp9CgpzdWIgcmVzdG9yZV9iYWNr
dXBfcHJpbWFyeQp7CglteSAoJGJhY2t1cF9kaXIsICRyZXN0b3JlX29wdGlvbnMsICRsYWJlbCkg
PSBAXzsKCW15ICRwcmltYXJ5X3BnZGF0YSA9ICRwcmltYXJ5LT5kYXRhX2RpcjsKCglwcmludCgi
UnVubmluZzogcmVzdG9yZV9iYWNrdXBfcHJpbWFyeTogJyRyZXN0b3JlX29wdGlvbnMnICckbGFi
ZWwnXG4iKTsKCgkkcHJpbWFyeS0+Y29tbWFuZF9vayhbICdybScsICctcmYnLCAkcHJpbWFyeV9w
Z2RhdGEgXSwKCQkiJyRsYWJlbCc6IHJtIHByaW1hcnkgcGdkYXRhIik7CgkkcHJpbWFyeS0+Y29t
bWFuZF9vayhbICdjcCcsICctcicsICRiYWNrdXBfZGlyLCAkcHJpbWFyeV9wZ2RhdGEgXSwKCQki
JyRsYWJlbCc6IGNvcHkgYmFzZWJhY2t1cCB0byBwcmltYXJ5Iik7CgoJIyBjb25maWd1cmUgcmVj
b3ZlcnkKCSRwcmltYXJ5LT5zZXRfcmVjb3ZlcnlfbW9kZTsKCW9wZW4gbXkgJGNvbmYsICc+Jywg
IiRwcmltYXJ5X3BnZGF0YS9wb3N0Z3Jlc3FsLmF1dG8uY29uZiI7CglwcmludCAkY29uZiAicmVj
b3ZlcnlfdGFyZ2V0X2FjdGlvbiA9ICdwcm9tb3RlJ1xuIjsKCXByaW50ICRjb25mICJyZXN0b3Jl
X2NvbW1hbmQgPSAnY3AgLXYgJGFyY2hpdmVkaXIvJWYgJHByaW1hcnlfcGdkYXRhLyVwJ1xuIjsK
CXByaW50ICRjb25mICIkcmVzdG9yZV9vcHRpb25zXG4iOwoJY2xvc2UgJGNvbmY7CgkkcHJpbWFy
eS0+c3RhcnQ7Cn0KCnN1YiB3YWl0X3JlY292ZXJ5X2FuZF9zd2l0Y2hfd2FsX3ByaW1hcnkKewoJ
bXkgKCRsYWJlbCkgPSBAXzsKCglwcmludCgiUnVubmluZzogd2FpdF9yZWNvdmVyeV9hbmRfc3dp
dGNoX3dhbF9wcmltYXJ5OiAnJGxhYmVsJ1xuIik7CgoJJHByaW1hcnktPnBvbGxfcXVlcnlfdW50
aWwoJ3Rlc3RfZGInLCAiU0VMRUNUIHRydWUgRlJPTSBwZ19zd2l0Y2hfd2FsKCkiKQoJCW9yIGRp
ZSAiJyRsYWJlbCc6IFRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzd2l0Y2ggV0FMIGFmdGVy
IHJlY292ZXJ5IjsKfQoKc3ViIHJlc3RvcmVfYmFja3VwX3N0YW5kYnkKewoJbXkgKCRiYWNrdXBf
ZGlyLCAkcmVzdG9yZV9wb2ludCwgJHByaW1hcnlfaG9zdCwgJHByaW1hcnlfcG9ydCwgJGxhYmVs
KSA9IEBfOwoKCW15ICRzdGFuZGJ5X3BnZGF0YSA9ICRzdGFuZGJ5LT5kYXRhX2RpcjsKCW15ICRz
dGFuZGJ5X3BvcnQgPSAkc3RhbmRieS0+cG9ydDsKCgkkc3RhbmRieS0+Y29tbWFuZF9vayhbICdy
bScsICctcmYnLCAkc3RhbmRieV9wZ2RhdGEgXSwKCQkiJyRsYWJlbCc6IHJtIHN0YW5kYnkgcGdk
YXRhIik7Cgkkc3RhbmRieS0+Y29tbWFuZF9vayhbICdjcCcsICctcicsICRiYWNrdXBfZGlyLCAk
c3RhbmRieV9wZ2RhdGEgXSwKCQkiJyRsYWJlbCc6IGNvcHkgYmFzZWJhY2t1cCB0byBzdGFuZGJ5
Iik7CgoJJHN0YW5kYnktPnNldF9yZWNvdmVyeV9tb2RlOwoJb3BlbiBteSAkY29uZiwgJz4nLCAi
JHN0YW5kYnlfcGdkYXRhL3Bvc3RncmVzcWwuYXV0by5jb25mIjsKCXByaW50ICRjb25mICJyZWNv
dmVyeV90YXJnZXRfYWN0aW9uID0gJ3NodXRkb3duJ1xuIjsKCXByaW50ICRjb25mICJyZXN0b3Jl
X2NvbW1hbmQgPSAnY3AgLXYgJGFyY2hpdmVkaXIvJWYgJHN0YW5kYnlfcGdkYXRhLyVwJ1xuIjsK
CXByaW50ICRjb25mICJyZWNvdmVyeV90YXJnZXRfbmFtZSA9ICckcmVzdG9yZV9wb2ludCdcbiI7
CgljbG9zZSAkY29uZjsKCSRzdGFuZGJ5LT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5jb25mJywg
J3BvcnQnLCAkc3RhbmRieV9wb3J0KTsKCSRzdGFuZGJ5LT5zdGFydChmYWlsX29rID0+IDEpOwoK
CSRzdGFuZGJ5LT53YWl0X2Zvcl9sb2coJ2RhdGFiYXNlIHN5c3RlbSBpcyBzaHV0IGRvd24nKTsK
CgkjIGNvbmZpZ3VyZSBwcmltYXJ5IGNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiBzbG90Cgl1
bmxpbmsgIiRzdGFuZGJ5X3BnZGF0YS9yZWNvdmVyeS5zaWduYWwiOwoJdW5saW5rICIkc3RhbmRi
eV9wZ2RhdGEvcG9zdGdyZXNxbC5hdXRvLmNvbmYiOwoJJHN0YW5kYnktPnNldF9zdGFuZGJ5X21v
ZGU7CglvcGVuICRjb25mLCAnPicsICIkc3RhbmRieV9wZ2RhdGEvcG9zdGdyZXNxbC5hdXRvLmNv
bmYiOwoJcHJpbnQgJGNvbmYgInByaW1hcnlfY29ubmluZm8gPSAncG9ydD0kcHJpbWFyeV9wb3J0
IGhvc3Q9JHByaW1hcnlfaG9zdCdcbiI7CglwcmludCAkY29uZiAicHJpbWFyeV9zbG90X25hbWUg
PSAnaW50ZXJuYWxfd2FsX3JlcGxpY2F0aW9uX3Nsb3QnXG4iOwoJY2xvc2UgJGNvbmY7CgoJJHN0
YW5kYnktPl91cGRhdGVfcGlkKDApOwoJJHN0YW5kYnktPnN0YXJ0Owp9Cgpta2RpcigkYXJjaGl2
ZWRpcik7CgojIEluaXRpYWxpemUgcHJpbWFyeQokcHJpbWFyeS0+aW5pdChhbGxvd3Nfc3RyZWFt
aW5nID0+IDEsIGV4dHJhID0+IFsnLS1kYXRhLWNoZWNrc3VtcyddKTsKJHByaW1hcnktPmFwcGVu
ZF9jb25mKCJwb3N0Z3Jlc3FsLmNvbmYiLCAiYXJjaGl2ZV9tb2RlID0gJ29uJyIpOwokcHJpbWFy
eS0+YXBwZW5kX2NvbmYoInBvc3RncmVzcWwuY29uZiIsICJhcmNoaXZlX2NvbW1hbmQgPSAnY3Ag
LXYgJXAgJGFyY2hpdmVkaXIvJyIpOwokcHJpbWFyeS0+c3RhcnQ7CiRwcmltYXJ5LT5zYWZlX3Bz
cWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBEQVRBQkFTRSB0ZXN0X2RiJyk7CiRwcmltYXJ5LT5zYWZl
X3BzcWwoJ3Rlc3RfZGInLCAnQ1JFQVRFIFRBQkxFIHRlc3QgQVMgU0VMRUNUIGdlbmVyYXRlX3Nl
cmllcygxLDEwKScpOwokcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgUk9M
RSBwb3N0Z3JlcyBXSVRIIExPR0lOIFJFUExJQ0FUSU9OJyk7CgojIFN0ZXBzIGF0IHByaW1hcnkg
YmVsb3cgYXJlIG5lZWRlZCB0byBnZW5lcmF0ZSBub24tbGluZWFyIGhpc3Rvcnkgb2YgdGltZWxp
bmVzCgpjcmVhdGVfYmFja3VwX3ByaW1hcnkoJGJhc2ViYWNrdXBkaXIxLCAnYmFja3VwX2xhYmVs
MScpOwokcHJpbWFyeS0+c3RvcCgnc21hcnQnKTsKcmVzdG9yZV9iYWNrdXBfcHJpbWFyeSgkYmFz
ZWJhY2t1cGRpcjEsICJyZWNvdmVyeV90YXJnZXRfbmFtZSA9ICdiYWNrdXBfbGFiZWwxJ1xucmVj
b3ZlcnlfdGFyZ2V0X3RpbWVsaW5lID0gJ2N1cnJlbnQnIiwgJzAwMSAtPiAwMTInKTsKd2FpdF9y
ZWNvdmVyeV9hbmRfc3dpdGNoX3dhbF9wcmltYXJ5KCcwMDEgLT4gMDEyJyk7CgpjcmVhdGVfYmFj
a3VwX3ByaW1hcnkoJGJhc2ViYWNrdXBkaXIyLCAnYmFja3VwX2xhYmVsMicpOwokcHJpbWFyeS0+
c3RvcCgnc21hcnQnKTsKcmVzdG9yZV9iYWNrdXBfcHJpbWFyeSgkYmFzZWJhY2t1cGRpcjIsICJy
ZWNvdmVyeV90YXJnZXRfbmFtZSA9ICdiYWNrdXBfbGFiZWwyJ1xucmVjb3ZlcnlfdGFyZ2V0X3Rp
bWVsaW5lID0gJ2N1cnJlbnQnIiwgJzAxMiAtPiAwMTMnKTsKd2FpdF9yZWNvdmVyeV9hbmRfc3dp
dGNoX3dhbF9wcmltYXJ5KCcwMTIgLT4gMDEzJyk7CgokcHJpbWFyeS0+c3RvcCgnc21hcnQnKTsK
cmVzdG9yZV9iYWNrdXBfcHJpbWFyeSgkYmFzZWJhY2t1cGRpcjIsICJyZWNvdmVyeV90YXJnZXRf
bmFtZSA9ICdiYWNrdXBfbGFiZWwyJ1xucmVjb3ZlcnlfdGFyZ2V0X3RpbWVsaW5lID0gJ2N1cnJl
bnQnIiwgJzAxMiAtPiAwMjMnKTsKd2FpdF9yZWNvdmVyeV9hbmRfc3dpdGNoX3dhbF9wcmltYXJ5
KCcwMTIgLT4gMDIzJyk7CgokcHJpbWFyeS0+c3RvcCgnc21hcnQnKTsKcmVzdG9yZV9iYWNrdXBf
cHJpbWFyeSgkYmFzZWJhY2t1cGRpcjEsICJyZWNvdmVyeV90YXJnZXRfbmFtZSA9ICdiYWNrdXBf
bGFiZWwxJ1xucmVjb3ZlcnlfdGFyZ2V0X3RpbWVsaW5lID0gJ2N1cnJlbnQnIiwgJzEwMSAtPiAx
MTInKTsKd2FpdF9yZWNvdmVyeV9hbmRfc3dpdGNoX3dhbF9wcmltYXJ5KCcxMDEgLT4gMTEyJyk7
CgokcHJpbWFyeS0+c3RvcCgnc21hcnQnKTsKcmVzdG9yZV9iYWNrdXBfcHJpbWFyeSgkYmFzZWJh
Y2t1cGRpcjIsICJyZWNvdmVyeV90YXJnZXRfbmFtZSA9ICdiYWNrdXBfbGFiZWwyJ1xucmVjb3Zl
cnlfdGFyZ2V0X3RpbWVsaW5lID0gJ2N1cnJlbnQnIiwgJzExMiAtPiAxMTMnKTsKd2FpdF9yZWNv
dmVyeV9hbmRfc3dpdGNoX3dhbF9wcmltYXJ5KCcxMTIgLT4gMTEzJyk7CgokcHJpbWFyeS0+c3Rv
cCgnc21hcnQnKTsKcmVzdG9yZV9iYWNrdXBfcHJpbWFyeSgkYmFzZWJhY2t1cGRpcjEsICJyZWNv
dmVyeV90YXJnZXRfbmFtZSA9ICdiYWNrdXBfbGFiZWwxJ1xucmVjb3ZlcnlfdGFyZ2V0X3RpbWVs
aW5lID0gJ2N1cnJlbnQnIiwgJzEwMSAtPiAxMTQnKTsKCiMgd2FpdCBmb3IgZW5kIG9mIHJlY292
ZXJ5IGFuZCBjcmVhdGUgcmVwbGljYXRpb24gc2xvdAokcHJpbWFyeS0+cG9sbF9xdWVyeV91bnRp
bCgndGVzdF9kYicsICJTRUxFQ1QgdHJ1ZSIpCiAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2Fp
dGluZyBmb3IgY3JlYXRpbmcgcmVwbGljYXRpb24gc2xvdCBhZnRlciByZWNvdmVyeSI7CiRwcmlt
YXJ5LT5zYWZlX3BzcWwoJ3Rlc3RfZGInLCAiU0VMRUNUIHBnX2NyZWF0ZV9waHlzaWNhbF9yZXBs
aWNhdGlvbl9zbG90KCdpbnRlcm5hbF93YWxfcmVwbGljYXRpb25fc2xvdCcpIik7CgpyZXN0b3Jl
X2JhY2t1cF9zdGFuZGJ5KCRiYXNlYmFja3VwZGlyMSwgJ2JhY2t1cF9sYWJlbDEnLCAkcHJpbWFy
eS0+aG9zdCwgJHByaW1hcnktPnBvcnQsICczMDEgLT4gMzEyJyk7CgojIEFmdGVyIHJlc3RhcnQg
c3RhbmRieSBkaWQgbm90IHN0YXJ0IGJlY2F1c2Ugb2YgZXJyb3IgKG5vdywgaXQgc2hvdWxkIHN0
YXJ0IGNvcnJlY3RseSkKJHN0YW5kYnktPnJlc3RhcnQ7Cgpkb25lX3Rlc3RpbmcoKTsK
------==--bound.497430.sjg23nxaikj7vz54.iva.yp-c.yandex.net--






Attachments:

  [application/octet-stream] 050_check_recovery_backup.pl (5.7K, 2-050_check_recovery_backup.pl)
  download

^ permalink  raw  reply  [nested|flat] 2+ messages in thread


end of thread, other threads:[~2025-03-18 13:02 UTC | newest]

Thread overview: 2+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2024-11-07 19:19 How to recover correctly master and replica using backup made by pg_basebackup? Evgeniy Ratkov <[email protected]>
2025-03-18 13:02 ` Evgeniy Ratkov <[email protected]>

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox