BUG #15615: pg_upgrade and vacuum_defer_cleanup_age - Mailing list pgsql-bugs
From | PG Bug reporting form |
---|---|
Subject | BUG #15615: pg_upgrade and vacuum_defer_cleanup_age |
Date | |
Msg-id | 15615-a64615b9b466c18f@postgresql.org Whole thread Raw |
Responses |
Re: BUG #15615: pg_upgrade and vacuum_defer_cleanup_age
(Laurenz Albe <laurenz.albe@cybertec.at>)
|
List | pgsql-bugs |
The following bug has been logged on the website: Bug reference: 15615 Logged by: Sergey Burladyan Email address: eshkinkot@gmail.com PostgreSQL version: 9.4.20 Operating system: Slackware, Debian Description: Hi! I use production config for pg_upgrade for new cluster and it has vacuum_defer_cleanup_age = 900000 With this setting pg_upgrade cannot freeze pg_catalog in new cluster (it do 'vacuumdb --all --freeze') during performing upgrade and upgrade fails: Performing Upgrade ------------------ Analyzing all rows in the new cluster ok Freezing all rows on the new cluster ok Deleting files from new pg_clog ok Copying old pg_clog to new server ok Setting next transaction ID and epoch for new cluster ok Deleting files from new pg_multixact/offsets ok Copying old pg_multixact/offsets to new server ok Deleting files from new pg_multixact/members ok Copying old pg_multixact/members to new server ok Setting next multixact ID and offset for new cluster ok Resetting WAL archives ok connection to database failed: FATAL: database "template1" does not exist could not connect to new postmaster started with the command: "/home/test/inst/pg9.6/bin/pg_ctl" -w -l "pg_upgrade_server.log" -D "new/" -o "-p 50432 -b -c synchronous_commit=off -c fsync=off -c full_page_writes=off -c listen_addresses='' -c unix_socket_permissions=0700 -c unix_socket_directories='/home/test/tmp/u'" start Failure, exiting I did not find any prohibition in the documentation on using production config with pg_upgrade, may be I am wrong and this is already mentioned in documentation. Test script: #!/bin/bash PGOLD=~/inst/pg9.4/bin PGNEW=~/inst/pg9.6/bin ${PGOLD}/pg_ctl init -s -D old -o "--lc-messages=C -T pg_catalog.english" ${PGNEW}/pg_ctl init -s -D new -o "--lc-messages=C -T pg_catalog.english" echo vacuum_defer_cleanup_age=10000 >> new/postgresql.auto.conf # move txid to 3 000 000 000 in old cluster as in production ${PGOLD}/pg_ctl start -w -D old -o "--port=54321 --unix_socket_directories=/tmp" ${PGOLD}/vacuumdb -h /tmp -p 54321 --all --analyze ${PGOLD}/vacuumdb -h /tmp -p 54321 --all --freeze ${PGOLD}/pg_ctl stop -D old -m smart # ${PGOLD}/pg_resetxlog -x 3000000000 old dd if=/dev/zero of=old/pg_clog/0B2D bs=262144 count=1 # # move txid in new cluster bigger than vacuum_defer_cleanup_age may fix problem # ${PGNEW}/pg_ctl start -w -D new -o "--port=54321 --unix_socket_directories=/tmp" # echo "select txid_current();" | ${PGNEW}/pgbench -h /tmp -p 54321 -n -P 5 -t 100000 -f- postgres # ${PGNEW}/pg_ctl stop -D new -m smart ${PGNEW}/pg_upgrade -k -d old/ -D new/ -b ${PGOLD}/ -B ${PGNEW}/ # rm -r new old pg_upgrade_* analyze_new_cluster.sh delete_old_cluster.sh
pgsql-bugs by date: