diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index ee0b018..a4c677a 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -2810,7 +2810,10 @@ reaper(SIGNAL_ARGS)
 			if (!EXIT_STATUS_0(exitstatus))
 				LogChildExit(LOG, _("archiver process"),
 							 pid, exitstatus);
-			if (XLogArchivingActive() && pmState == PM_RUN)
+			if (wal_level >= WAL_LEVEL_ARCHIVE &&
+				((pmState == PM_RUN && XLogArchiveMode > ARCHIVE_MODE_OFF) ||
+				 ((pmState == PM_RECOVERY || pmState == PM_HOT_STANDBY) &&
+				  XLogArchiveMode == ARCHIVE_MODE_ALWAYS)))
 				PgArchPID = pgarch_start();
 			continue;
 		}
