Greetings Satya, * Satyanarayana Narlapuram (satyanarayana.narlapu...@microsoft.com) wrote: > During crash recovery, last checkpoint record information is obtained from > the backup label if present, instead of getting it from the control file. > This behavior is causing PostgreSQL database cluster not to come up until the > backup label file is deleted (as the error message says). > > if (checkPoint.redo < checkPointLoc) > { > if (!ReadRecord(xlogreader, checkPoint.redo, > LOG, false)) > ereport(FATAL, > (errmsg("could not find > redo location referenced by checkpoint record"), > errhint("If you are not > restoring from a backup, try removing the file \"%s/backup_label\".", > DataDir))); > } > > If we are recovering from a dump file, reading from the backup label files > makes sense as the control file could be archived after a few checkpoints. > But this is not the case for crash recovery, and is always safe to read the > checkpoint record information from the control file. > Is this behavior kept this way as there is no clear way to distinguish > between the recovery from the dump and the regular crash recovery?
This is why the exclusive backup method has been deprecated in PG10 in favor of the non-exclusive backup method, which avoids this by not creating a backup label file (it's up to the backup software to store the necessary information and create the file for use during recovery). Please see: https://www.postgresql.org/docs/10/static/continuous-archiving.html In particular, section 25.3.3. Thanks! Stephen
signature.asc
Description: Digital signature