#!/bin/bash OLD_DATA=old OLD_LOG=log.old OLD_PORT=5432 NEW_DATA=new NEW_PORT=5433 PGUSER=postgres BINDIR=/usr/local/pgsql/bin/ pg_ctl stop -D $OLD_DATA rm -rf $OLD_DATA $OLD_LOG $NEW_DATA initdb -D $OLD_DATA -U $PGUSER -c port=$OLD_PORT pg_ctl start -D $OLD_DATA -l $OLD_LOG ( echo " CREATE EXTENSION postgres_fdw; CREATE USER test ; GRANT CREATE ON DATABASE postgres TO test; GRANT pg_create_subscription TO test; GRANT ALL ON FOREIGN DATA WRAPPER postgres_fdw TO test; CREATE SERVER server FOREIGN DATA WRAPPER postgres_fdw OPTIONS (dbname 'postgres', port '5432'); CREATE USER MAPPING FOR PUBLIC SERVER server OPTIONS (user 'test', password 'test'); GRANT ALL ON FOREIGN SERVER server TO test ; GRANT CREATE ON SCHEMA PUBLIC TO test ; SET SESSION AUTHORIZATION test; CREATE SUBSCRIPTION sub SERVER server PUBLICATION pub WITH (streaming=parallel, copy_data=off, password_required=true, enabled=off, connect=off);" ) | psql -U $PGUSER -p $OLD_PORT pg_ctl stop -D $OLD_DATA initdb -D $NEW_DATA -U $PGUSER -c port=$NEW_PORT pg_upgrade -d $OLD_DATA -D $NEW_DATA -b $BINDIR -U $PGUSER -r