diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index d47d0d916bf33187ad8c402d2c4a03905de7fa31..92adc4e9fed9773ca8dd2356770a2d8ef10aa23f 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -6580,6 +6580,12 @@ StartupXLOG(void)
 		ControlFile->prevCheckPoint = ControlFile->checkPoint;
 		ControlFile->checkPoint = checkPointLoc;
 		ControlFile->checkPointCopy = checkPoint;
+		if (InArchiveRecovery)
+		{
+			/* initialize minRecoveryPoint if not set yet */
+			if (XLByteLT(ControlFile->minRecoveryPoint, checkPoint.redo))
+				ControlFile->minRecoveryPoint = checkPoint.redo;
+		}
 
 		/*
 		 * Set backupStartPoint if we're starting recovery from a base backup.