diff options
author | Bruce Momjian <bruce@momjian.us> | 2017-06-20 13:20:02 -0400 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2017-06-20 13:20:02 -0400 |
commit | 5c890645d9c4f57d49110e7943914c11012d3e85 (patch) | |
tree | 5091d24814e93a055727442bc9548854db88e8e5 | |
parent | f1e1f990887b87174b6c291f5a60d2b2f4393dce (diff) |
pg_upgrade: start/stop new server after pg_resetwal
When commit 0f33a719fdbb5d8c43839ea0d2c90cd03e2af2d2 removed the
instructions to start/stop the new cluster before running rsync, it was
now possible for pg_resetwal/pg_resetxlog to leave the final WAL record
at wal_level=minimum, preventing upgraded standby servers from
reconnecting.
This patch fixes that by having pg_upgrade unconditionally start/stop
the new cluster after pg_resetwal/pg_resetxlog has run.
Backpatch through 9.2 since, though the instructions were added in PG
9.5, they worked all the way back to 9.2.
Discussion: https://postgr.es/m/20170620171844.GC24975@momjian.us
Backpatch-through: 9.2
-rw-r--r-- | contrib/pg_upgrade/check.c | 19 | ||||
-rw-r--r-- | contrib/pg_upgrade/pg_upgrade.c | 2 | ||||
-rw-r--r-- | contrib/pg_upgrade/pg_upgrade.h | 2 |
3 files changed, 13 insertions, 10 deletions
diff --git a/contrib/pg_upgrade/check.c b/contrib/pg_upgrade/check.c index add239db991..146eba3253c 100644 --- a/contrib/pg_upgrade/check.c +++ b/contrib/pg_upgrade/check.c @@ -196,13 +196,19 @@ report_clusters_compatible(void) void -issue_warnings(char *sequence_script_file_name) +issue_warnings_and_set_wal_level(char *sequence_script_file_name) { + /* + * We unconditionally start/stop the new server because pg_resetwal -o + * set wal_level to 'minimum'. If the user is upgrading standby + * servers using the rsync instructions, they will need pg_upgrade + * to write its final WAL record with the proper wal_level. + */ + start_postmaster(&new_cluster, true); + /* old = PG 8.3 warnings? */ if (GET_MAJOR_VERSION(old_cluster.major_version) <= 803) { - start_postmaster(&new_cluster, true); - /* restore proper sequence values using file created from old server */ if (sequence_script_file_name) { @@ -218,16 +224,13 @@ issue_warnings(char *sequence_script_file_name) old_8_3_rebuild_tsvector_tables(&new_cluster, false); old_8_3_invalidate_hash_gin_indexes(&new_cluster, false); old_8_3_invalidate_bpchar_pattern_ops_indexes(&new_cluster, false); - stop_postmaster(false); } /* Create dummy large object permissions for old < PG 9.0? */ if (GET_MAJOR_VERSION(old_cluster.major_version) <= 804) - { - start_postmaster(&new_cluster, true); new_9_0_populate_pg_largeobject_metadata(&new_cluster, false); - stop_postmaster(false); - } + + stop_postmaster(false); } diff --git a/contrib/pg_upgrade/pg_upgrade.c b/contrib/pg_upgrade/pg_upgrade.c index ded26c4035a..96221240a74 100644 --- a/contrib/pg_upgrade/pg_upgrade.c +++ b/contrib/pg_upgrade/pg_upgrade.c @@ -168,7 +168,7 @@ main(int argc, char **argv) create_script_for_cluster_analyze(&analyze_script_file_name); create_script_for_old_cluster_deletion(&deletion_script_file_name); - issue_warnings(sequence_script_file_name); + issue_warnings_and_set_wal_level(sequence_script_file_name); pg_log(PG_REPORT, "\nUpgrade Complete\n"); pg_log(PG_REPORT, "----------------\n"); diff --git a/contrib/pg_upgrade/pg_upgrade.h b/contrib/pg_upgrade/pg_upgrade.h index 4b6536a35e1..aec1f54b15d 100644 --- a/contrib/pg_upgrade/pg_upgrade.h +++ b/contrib/pg_upgrade/pg_upgrade.h @@ -315,7 +315,7 @@ void check_and_dump_old_cluster(bool live_check, char **sequence_script_file_name); void check_new_cluster(void); void report_clusters_compatible(void); -void issue_warnings(char *sequence_script_file_name); +void issue_warnings_and_set_wal_level(char *sequence_script_file_name); void output_completion_banner(char *analyze_script_file_name, char *deletion_script_file_name); void check_cluster_versions(void); |