diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 175d1d5ebf4e79eb57953aa11313763aea3cf87c..d8b4f282552298903c042860691cf73f8dbe29e0 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -2356,8 +2356,7 @@ include 'filename'
         is measured in terms of number of write transactions occurring on the
         primary server, it is difficult to predict just how much additional
         grace time will be made available to standby queries.
-        This parameter can only be set in the <filename>postgresql.conf</>
-        file or on the server command line.
+        This parameter can only be set at server start.
        </para>
        <para>
         You should also consider setting <varname>hot_standby_feedback</>
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 6128694200f0a9a69402493c0303ab9ea243e92b..b0af9f5c9aed6287453c73ba3995244a46f19d00 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -1881,7 +1881,12 @@ static struct config_int ConfigureNamesInt[] =
 	},
 
 	{
-		{"vacuum_defer_cleanup_age", PGC_SIGHUP, REPLICATION_MASTER,
+		/*
+		 * Setting this to a higher value without restarting postmaster
+		 * can cause various bugs in TOAST object removal, CLUSTER and
+		 * possibly other places, so this must be changed only on restart.
+		 */
+		{"vacuum_defer_cleanup_age", PGC_POSTMASTER, REPLICATION_MASTER,
 			gettext_noop("Number of transactions by which VACUUM and HOT cleanup should be deferred, if any."),
 			NULL
 		},