{
    BackgroundWorker bgw;
 
-   if (max_logical_replication_workers == 0)
+   /*
+    * The logical replication launcher is disabled during binary upgrades, to
+    * prevent logical replication workers from running on the source cluster.
+    * That could cause replication origins to move forward after having been
+    * copied to the target cluster, potentially creating conflicts with the
+    * copied data files.
+    */
+   if (max_logical_replication_workers == 0 || IsBinaryUpgrade)
        return;
 
    memset(&bgw, 0, sizeof(bgw));
 
     * invalidation of slots during the upgrade. We set this option when
     * cluster is PG17 or later because logical replication slots can only be
     * migrated since then. Besides, max_slot_wal_keep_size is added in PG13.
-    *
-    * Use max_logical_replication_workers as 0 to prevent a startup of the
-    * logical replication launcher while upgrading because it may start apply
-    * workers that could start receiving changes from the publisher before
-    * the physical files are put in place, causing corruption on the new
-    * cluster upgrading to.  Like the previous parameter, this is set only
-    * when a cluster is PG17 or later as logical slots can only be migrated
-    * since this version.
     */
    if (GET_MAJOR_VERSION(cluster->major_version) >= 1700)
-       appendPQExpBufferStr(&pgoptions, " -c max_slot_wal_keep_size=-1 -c max_logical_replication_workers=0");
+       appendPQExpBufferStr(&pgoptions, " -c max_slot_wal_keep_size=-1");
 
-   /* Use -b to disable autovacuum. */
+   /*
+    * Use -b to disable autovacuum and logical replication launcher
+    * (effective in PG17 or later for the latter).
+    */
    snprintf(cmd, sizeof(cmd),
             "\"%s/pg_ctl\" -w -l \"%s/%s\" -D \"%s\" -o \"-p %d -b%s %s%s\" start",
             cluster->bindir,