====== Upgrade of PostgreSQL and Ubuntu upgrade ====== 1. Create a snapshot with XenServer Stop the database to make sure snapshot is consistent. # service postgresql stop * Stopping PostgreSQL 9.3 database server ...done. postgresql xenserver# xe vm-snapshot new-name-label="Pre PG 9.4 install" vm=exampleVMname 26441bbe-9e47-5590-a93f-5b3cd2ddf9b7 2. Install the PGDG repo # sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' # curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - # apt-get update 3. Install the PGDG postgresql upgrade # aptitude install postgresql-9.4 The following NEW packages will be installed: postgresql-9.4 postgresql-client-9.4{a} postgresql-contrib-9.4{a} 0 packages upgraded, 3 newly installed, 0 to remove and 115 not upgraded. Need to get 0 B/5,281 kB of archiv 4. Remove the new PG server empty "cluster" # sudo -u postgres pg_dropcluster --stop 9.4 main 5. Perform an upgrade which does a binary copy of the existing database # service postgresql stop # pg_upgradecluster -v 9.4 9.3 main Disabling connections to the old cluster during upgrade... Restarting old cluster with restricted connections... Creating new cluster 9.4/main ... config /etc/postgresql/9.4/main data /var/lib/postgresql/9.4/main locale en_CA.UTF-8 port 5433 Disabling connections to the new cluster during upgrade... ... Success. Please check that the upgraded cluster works. If it does, you can remove the old cluster with pg_dropcluster 9.3 main 6. Remove the old postgresql 9.3 (Ubuntu) packages # apt-get remove postgresql postgresql.*-9.3 # apt-get autoremove 7. Proceed with the Ubuntu upgrade # apt-get dist-upgrade # do-release-upgrade And restore the PGDG repo # sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' # apt update # apt full-upgrade