Take a snapshot using virutalbox if you are worried about the data loss.

# add 9.4 repo

export LANG=en_US.UTF-8;
curl -O $pg_url; sudo rpm -ivh pgdg-centos94-9.4-1.noarch.rpm;
rm pgdg-centos94-9.4-1.noarch.rpm;

sudo yum update -y
sudo yum upgrade -y

sudo yum install -y postgresql94
sudo yum install -y postgresql94-server
sudo yum install -y postgresql94-devel
sudo yum install -y postgresql94-contrib # pg_update is part of contrib

sudo systemctl stop postgresql-9.3.service
sudo systemctl stop postgresql-9.4.service

su -
su postgres

# run the upgrade

/usr/pgsql-9.4/bin/pg_upgrade -b /usr/pgsql-9.3/bin \ 
                              -B /usr/pgsql-9.4/bin -d /var/lib/pgsql/9.3/data \
                              -D /var/lib/pgsql/9.4/data 
                              -p 5432 -P 5433 

su $YOU

sudo systemctl disable postgresql-9.4.service 
sudo systemctl start postgresql-9.4.service 

# analysis 

 "/usr/pgsql-9.4/bin/vacuumdb" -U "postgres" --all --analyze-only

# remove postgres-9.3

sudo yum erase postgresql93

#remove postgres-9.3 repo
sudo rm -rf /etc/yum.repos.d/pgdg-93-centos.repo

# rm data of 9.3. not very necessary
# su - 
# rm -rf  /var/lib/pgsql/9.3/data

postgres basic

all the config file is in the pddata dir, including pg_hba.conf postgresql.conf


the bin dir is


TODO: postgres auth manage