Re: pg_basebackup / recovery
Στις 13/4/23 01:31, ο/η Michael Paquier έγραψε: On Wed, Apr 12, 2023 at 01:45:56PM +0300, Achilleas Mantzios - cloud wrote: On 4/12/23 12:32, Fabrice Chapuis wrote: During recovery process of a self contained backup, how postgres know to stop reading wal when consistency is reached? Because it knows the full packup info. It will observe the STOP WAL LOCATION: 3BC7/4B000130 (file 00023BC7004B) inside the backup file There is a bit more to that in the recovery logic, depending mostly on the presence of backup_ label file in the data folder when recovery begins. Once the backup_label is found at the beginning of recovery, its information is stored in the control file and the file is renamed to backup_label.old hence stopping the server when recovery has not reached its expected point would rely on the control file contents later on. Then, the startup process and its WAL redo makes sure that WAL replays until it finds the WAL record marking the end of the backup. Grepping for XLOG_BACKUP_END (WAL record type in this case) shows all the areas that rely on that, and xlogrecovery.c covers the most relevant bits. Thank you for the info! Sorry about my stupid typo "packup" :( -- Michael -- Achilleas Mantzios IT DEV - HEAD IT DEPT Dynacom Tankers Mgmt
Re: pg_basebackup / recovery
On Wed, Apr 12, 2023 at 01:45:56PM +0300, Achilleas Mantzios - cloud wrote: > On 4/12/23 12:32, Fabrice Chapuis wrote: >> During recovery process of a self contained backup, how postgres know to >> stop reading wal when consistency is reached? > > Because it knows the full packup info. It will observe the > > STOP WAL LOCATION: 3BC7/4B000130 (file 00023BC7004B) > > inside the backup file There is a bit more to that in the recovery logic, depending mostly on the presence of backup_ label file in the data folder when recovery begins. Once the backup_label is found at the beginning of recovery, its information is stored in the control file and the file is renamed to backup_label.old hence stopping the server when recovery has not reached its expected point would rely on the control file contents later on. Then, the startup process and its WAL redo makes sure that WAL replays until it finds the WAL record marking the end of the backup. Grepping for XLOG_BACKUP_END (WAL record type in this case) shows all the areas that rely on that, and xlogrecovery.c covers the most relevant bits. -- Michael signature.asc Description: PGP signature
Re: pg_basebackup / recovery
On 4/12/23 12:32, Fabrice Chapuis wrote: During recovery process of a self contained backup, how postgres know to stop reading wal when consistency is reached? Because it knows the full packup info. It will observe the STOP WAL LOCATION: 3BC7/4B000130 (file 00023BC7004B) inside the backup file It's a full contained backup because you haven't called with the |-X /|method none|/| , and it doesn't get into standby because you haven't called with |--write-recovery-conf !| |I believe by default it will do what you meant that you want. |
pg_basebackup / recovery
During recovery process of a self contained backup, how postgres know to stop reading wal when consistency is reached?