
PostgreSQL atau sering disebut dengan Postgres adalah sebuah sistem manajemen database relasional atau RDBMS (Relational Database Management System) yang memberikan sebuah implementasi bahasa query SQL. Sistem database Postgres banyak dipilih dan sangat populer digunakan di berbagai skala project dari kecil hingga besar dan kompleks, hal ini dikarenakan sistem database ini memiliki banyak fitur canggih seperti transaksi yang reliabel dan konkurensi tanpa read locks.
Salah satu project yang kami tangani sekarang ini menggunakan PostgreSQL 9.3, PHP 5.5.9 dan berjalan di atas Ubuntu 14.04.5. Komposisi ini cukup ideal bagi kebutuhan project yang sudah berjalan hampir 4 tahun, hanya saja dengan semakin bertambahnya klien dan perangkat yang terhubung ke server membuat database semakin besar. Hal ini akhirnya membebani sistem terlebih saat klien ingin mendapatkan laporan secara langsung dalam bentuk PDF.
Kondisi ini membuat kami berpikir untuk meng-upgrade PostgreSQL yang sekarang digunakan ke versi terbaru yang ada untuk sistem operasi Ubuntu yang sedang berjalan. Setelah mencari informasi postgreSQL versi berapa yang tersedia dalam bentuk binary untuk Ubuntu 14.04, akhirnya kami memutuskan menggunakan PostgreSQL 11. Versi ini merupakan versi tertinggi yang kini tersedia untuk Ubuntu 14 dan bisa didapatkan langsung dengan meng-install nya melalui apt-get.

Cara Mudah Upgrade PostgreSQL 9.3 ke PostgreSQL 11
Proses upgrade cukup mudah dan tidak mengubah struktur tabel apapun di database yang sudah ada. Hal ini tentunya sangat kami harapkan untuk menghindari kerja tambahan memastikan database utuh dan bisa diakses oleh klien tanpa kurang suatu apapun.
Upgrade PostgreSQL ini dimudahkan dengan adanya fitur tool pg_upgrade yang sudah menjadi tool bawaan saat melakukan instalasi PostgreSQL di server yang sama. Berikut adalah tutorial cara cepat melakukan upgrade ke PostgreSQL 11 di Ubuntu ataupun Debian. Oh ya, jangan lupa, untuk berjaga-jaga, lakukan proses backup data.
Tambahkan repository server untuk PostgreSQL 11 terbaru, repository ini langsung mengambil dari situs resmi Postgres.
laks@masivo:~$ sudo nano /etc/apt/sources.list.d/pgdg.list
masukkan repository dibawah ini
deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main
Download dan impor repository key ke server
laks@masivo:~$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Kemudian update repository untuk guna menambahkan repository Postgres ke server
laks@masivo:~$ sudo apt-get update
Update packages dan install PostgreSQL 11
laks@masivo:~$ sudo apt-get install postgresql postgresql-client postgresql-client-common postgresql-common
Cek konfigurasi, pastikan tidak ada perbedaan diantara keduanya. Jika ada, lakukan penyesuaian konfigurasi di file konfigurasi PostgreSQL 11.
laks@masivo:~$ diff /etc/postgresql/9.3/main/postgresql.conf /etc/postgresql/11/main/postgresql.conf
laks@masivo:~$ diff /etc/postgresql/9.3/main/pg_hba.conf /etc/postgresql/11/main/pg_hba.conf
Dalam proses ini, kami melakukan penyesuaian untuk file konfigurasi pg_hba.conf. Untuk itu pastikan Anda memperhatikan kedua file ini sebelum lanjut ke proses berikutnya.
Stop service PostgreSQL
laks@masivo:~$ sudo service postgresql stop
akan terlihat ada dua service postgresql yang dihentikan yaitu postgresql versi 9.3 dan 11.
Kini log-in sebagai user postgres
laks@masivo:~$ sudo su postgres
Lakukan inisialisasi database menggunakan PostgresQL 11
postgres@masivo:/home/laks$ /usr/lib/postgresql/11/bin/initdb -D /var/lib/postgresql/11/data
Lakukan proses pengecekan cluster (parameter –check, ini tidak akan merubah database).
postgres@masivo:/tmp$ /usr/lib/postgresql/11/bin/pg_upgrade \ --old-datadir=/var/lib/postgresql/9.3/main \ --new-datadir=/var/lib/postgresql/11/main \ --old-bindir=/usr/lib/postgresql/9.3/bin \ --new-bindir=/usr/lib/postgresql/11/bin \ --old-options '-c config_file=/etc/postgresql/9.3/main/postgresql.conf' \ --new-options '-c config_file=/etc/postgresql/11/main/postgresql.conf' \ --check
Jika semuanya oke, kini jalankan kembali perintah di atas tanpa parameter –check. Hal ini untuk melakukan proses migrasi dari PostgreSQL 9.3 ke POstgreSQL 11.
postgres@masivo:/tmp$ /usr/lib/postgresql/11/bin/pg_upgrade \ --old-datadir=/var/lib/postgresql/9.3/main \ --new-datadir=/var/lib/postgresql/11/main \ --old-bindir=/usr/lib/postgresql/9.3/bin \ --new-bindir=/usr/lib/postgresql/11/bin \ --old-options '-c config_file=/etc/postgresql/9.3/main/postgresql.conf' \ --new-options '-c config_file=/etc/postgresql/11/main/postgresql.conf' \
Kembali ke user biasa.
postgres@masivo:/tmp$ exit
Tukar port yang digunakan di antara kedua postgreSQL,
laks@masivo:~$ sudo nano /etc/postgresql/11/main/postgresql.conf
…rubah “port = 5433” ke “port = 5432”
laks@masivo:~$ sudo nano /etc/postgresql/9.3/main/postgresql.conf
…rubah “port = 5432” ke “port = 5433”
Jalankan kembali service PostgreSQL, karena kita hanya ingin menggunakan PostgreSQL 11, maka perlu ditambahkan nomor versinya di belakang perintah seperti berikut
laks@masivo:~$ sudo service postgresql start 11
Log-in kembali sebagai user postgres
laks@masivo:~$ sudo su postgres
Cek versi PostgreSQL yang baru terpasang
postgres@masivo:/home/laks$ psql -c "SELECT version();"
Kini jalankan script analyze_new_cluster, pastikan berada di direktori /tmp supaya bisa mendapatkan hak write ke server.
postgres@masivo:/home/laks$ cd /tmp
postgres@masivo:/tmp$
Kembali sebagai user biasa
postgres@masivo:/tmp$ exit
Cek paket PostgreSQL 9.3 apa saja yang terinstal
laks@masivo:~$ apt list --installed | grep postgresql
Hapus paket software PostgreSQL 9.3 dari yang muncul dari list di atas Pastikan hanya yang mempunyai imbuhan 9.3 di belakang tiap package yang Anda hapus.
postgresql-9.3/now 9.3.17-1.pgdg14.04+1 amd64 [installed,local] postgresql-client-9.3/now 9.3.17-1.pgdg14.04+1 amd64 [installed,local] postgresql-client-common/now 182.pgdg14.04+1 all [installed,local] postgresql-common/now 182.pgdg14.04+1 all [installed,local] postgresql-contrib-9.3/now 9.3.17-1.pgdg14.04+1 amd64 [installed,local]
laks@masivo:~$ sudo apt-get remove postgresql-9.3 postgresql-client-9.3 postgresql-contrib-9.3
Hapus file konfigurasi PostgreSQL 9.3
laks@masivo:~$ sudo rm -rf /etc/postgresql/9.3/
Masuk kembali sebagai user postgres
laks@masivo:~$ sudo su postgres
Langkah terakhir, drop semua data dari cluster PostgreSQL 9.3
postgres@masivo:/home/laks$ cd /tmp postgres@masivo:/tmp$ ./delete_old_cluster.sh
Itulah langkah-langkah cara melakukan upgrade PostgreSQL tanpa merubah data apapun di database PostgreSQL 9.3 untuk digunakan di PostgreSQL 11.
Untuk proses menghapus PostgreSQL 9.3, bisa juga dilakukan lain waktu saat Anda sudah yakin dengan PostgreSQL yang baru.
Fitur PostgreSQL 11 pastinya lebih banyak dan lebih modern dalam memenuhi kebutuhan komputasi database di era digital ini. Jika dirasa perlu untuk upgrade ke PostgreSQL 12, maka yang harus dilakukan adalah melakukan upgrade sistem operasi Ubuntu terlebih dahulu, mungkin pilihan Ubuntu 20 LTS menjadi pilihan yang bijak terlebih sudah mendukung berbagai sistem komputasi modern berbasis cloud dengan docker, kubernetes dan lain sebagainya.
Oh ya jika dirasa ada pertanyaan ataupun saran, silahkan tinggalkan di kolom komentar di bawah ini.
Leave a Reply