diff --git a/contrib/pg_upgrade/pg_upgrade.c b/contrib/pg_upgrade/pg_upgrade.c
index 773bb07e04eb9c2a3384ff68fc9398fe5cbd7313..c7386cdd3d3bc74b60fb57fb5cd0f6353988c10a 100644
--- a/contrib/pg_upgrade/pg_upgrade.c
+++ b/contrib/pg_upgrade/pg_upgrade.c
@@ -363,22 +363,35 @@ create_new_objects(void)
 }
 
 /*
- * Delete the given subdirectory contents from the new cluster, and copy the
- * files from the old cluster into it.
+ * Delete the given subdirectory contents from the new cluster
  */
 static void
-copy_subdir_files(char *subdir)
+remove_new_subdir(char *subdir, bool rmtopdir)
 {
-	char		old_path[MAXPGPATH];
 	char		new_path[MAXPGPATH];
 
 	prep_status("Deleting files from new %s", subdir);
 
-	snprintf(old_path, sizeof(old_path), "%s/%s", old_cluster.pgdata, subdir);
 	snprintf(new_path, sizeof(new_path), "%s/%s", new_cluster.pgdata, subdir);
-	if (!rmtree(new_path, true))
+	if (!rmtree(new_path, rmtopdir))
 		pg_fatal("could not delete directory \"%s\"\n", new_path);
+
 	check_ok();
+}
+
+/*
+ * Copy the files from the old cluster into it
+ */
+static void
+copy_subdir_files(char *subdir)
+{
+	char		old_path[MAXPGPATH];
+	char		new_path[MAXPGPATH];
+
+	remove_new_subdir(subdir, true);
+
+	snprintf(old_path, sizeof(old_path), "%s/%s", old_cluster.pgdata, subdir);
+	snprintf(new_path, sizeof(new_path), "%s/%s", new_cluster.pgdata, subdir);
 
 	prep_status("Copying old %s to new server", subdir);
 
@@ -419,6 +432,7 @@ copy_clog_xlog_xid(void)
 	{
 		copy_subdir_files("pg_multixact/offsets");
 		copy_subdir_files("pg_multixact/members");
+
 		prep_status("Setting next multixact ID and offset for new cluster");
 
 		/*
@@ -436,6 +450,13 @@ copy_clog_xlog_xid(void)
 	}
 	else if (new_cluster.controldata.cat_ver >= MULTIXACT_FORMATCHANGE_CAT_VER)
 	{
+		/*
+		 * Remove files created by initdb that no longer match the
+		 * new multi-xid value.
+		 */
+		remove_new_subdir("pg_multixact/offsets", false);
+		remove_new_subdir("pg_multixact/members", false);
+
 		prep_status("Setting oldest multixact ID on new cluster");
 
 		/*