Saya membuat postingan upgrade Postgresql 11 ke 12 ini sebenarnya sekaligus untuk catatan pribadi saya karena beberapa waktu ini harus mengupgrade Postgresql dari versi 11 ke versi 12 di server Centos 7.
Postgresql 11 sendiri sudah EOL atau End of Life, dimana dukunganya sudah dihentikan mulai 9 November 2023.
Langkah – langkah upgrade
Download Postgresql 12 beserta dependensinya di link ini
postgresql12-server-12.17-1PGDG.rhel7.x86_64.rpm
postgresql12-12.17-1PGDG.rhel7.x86_64.rpm
postgresql12-libs-12.17-1PGDG.rhel7.x86_64.rpm
postgresql12-contrib-12.17-1PGDG.rhel7.x86_64.rpm
Hentikan service Postgresql 11
sudo systemctl stop postgresql-11
Install Postgresql 12
sudo rpm -ivh postgresql12-libs-12.17-1PGDG.rhel7.x86_64.rpm
sudo rpm -ivh postgresql12-12.17-1PGDG.rhel7.x86_64.rpm
sudo rpm -ivh postgresql12-server-12.17-1PGDG.rhel7.x86_64.rpm
sudo rpm -ivh postgresql12-contrib-12.17-1PGDG.rhel7.x86_64.rpm
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
sudo systemctl enable postgresql-12
Lakukan Check compatibility upgrade postgresql 11 ke 12
cd /
sudo su - postgres
/usr/pgsql-12/bin/pg_upgrade \
-b /usr/pgsql-11/bin/ \
-B /usr/pgsql-12/bin/ \
-d /var/lib/pgsql/11/data/ \
-D /var/lib/pgsql/12/data/ \
--check
Setelah melakukan check dan tidak ada kendala, lakukan upgrade
/usr/pgsql-12/bin/pg_upgrade \
-b /usr/pgsql-11/bin/ \
-B /usr/pgsql-12/bin/ \
-d /var/lib/pgsql/11/data/ \
-D /var/lib/pgsql/12/data/ \
Setelah upgrade selesai database dan user yang sebelumnya ada di postgresql 11 akan dipindahkan ke Postgresql 12
Disable dan remove postgresql 11
sudo systemctl disable postgresql-11
sudo yum remove postgresql11-server postgresql11
Lakukan config ulang untuk pg_hba.conf dan postgresql.conf sesuai dengan versi sebelumnya
Jalankan service postgresql 12
sudo systemctl start postgresql-12
Langkah selanjutnya adalah melakukan checking pada database dan aplikasi yang mengunakan postgresql12
Sebelum melakukan upgrade di server Production, saran saya untuk melakukan simulasi upgrade di Virtual Machine atau VM percobaan terlebih dahulu.