Environment: Postgres 9.1 running on Ubuntu 13.04 on AWS EC2 instance with a single cluster on AWS EBS
Some pre-steps can be found here:
https://wiki.postgresql.org/wiki/Using_pg_upgrade_on_Ubuntu/Debian
Get details of the present clusters:
1 2 3 4 |
$ sudo pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 9.1 main 5433 down postgres /data/main /var/log/postgresql/postgresql-9.1-main.log 9.3 main 5432 online postgres /var/lib/postgresql/9.3/main /var/log/postgresql/postgresql-9.3-main.log |
Stop all Postgres services:
1 |
$ sudo service postgresql stop |
Drop new 9.3 cluster created by default during installation of postgres 9.3:
1 |
$ pg_dropcluster --stop 9.3 main |
Create a new 9.3 cluster from existing 9.1 one:
1 |
$ pg_upgradecluster 9.1 main |
Check if it worked:
1 |
$ sudo service postgresql start 9.3 |
Make sure you can access your data: if ok – drop 9.1 cluster:
1 |
$ pg_dropcluster --stop 9.1 main |
All steps below are optional: Move data storage to an alternative location
In my case it’s an instance of Amazon EBS (Elastic Storage) mounted to /data/main
Stop all Postgres services:
1 |
$ sudo service postgresql stop |
Move actual directory :
1 |
$ sudo cp -a /var/lib/postgresql/9.3/main /data/main |
Amend 9.3 configs:
1 |
$ sudo nano /etc/postgresql/9.3/main/postgresql.conf |
Comment out old data_directory path and point it to the new location:
1 2 |
# yz: data_directory = '/var/lib/postgresql/9.3/main' data_directory = '/data/main' |
Check if it worked:
1 2 3 |
$ sudo pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 9.3 main 5432 down postgres /data/main /var/log/postgresql/postgresql-9.3-main.log |
Start postgres:
1 |
$ sudo service postgresql start |
Optional – remove /var/lib/postgresql/9.3/main created by default during 9.3 installation:
1 |
$ sudo rm -r /var/lib/postgresql/9.3/main |