Assalamu'alaikum wr.wb
Pada kali ini ane ingin share gimana sih caranya buat replication database postgresql. Oke disini saya punya 2 server, satu sebagai masternya, dan yang satu lagi sebagai slavenya. Jadi satu server hanya menjadi backup database saja.
I. Persiapan
Pastikan anda mempunyai 2 buah server yang sudah diinstall postgresql, caranya bisa dilihat disini
Dari kedua server tersebut ada yg bertindak sebagai master dan ada juga yang bertindak sebagai slave. Untuk lebih jelasnya bisa lihat gambar topologi dibawah ini..
Topologi :
II. Konfigurasi Server Master
1. Edit file konfigurasi postgresql yaitu postgresql.conf yang terletak di /var/lib/pgsql/data/
2. Konfigurasi seperti ini
Cari wal_level kemudian atur valuenya menjadi hot_standby kemudian scroll kebawah sedikit uncomment synchornus_commit dan ubah valuenya menjadi local
Write-Ahead Logging (WAL) adalah metode standar untuk mengatur integritas data. WAL memiliki konsep yaitu bahwa perubahan pada file data (di mana tabel dan indeks berada) harus ditulis hanya setelah perubahan tersebut dicatat, yaitu setelah catatan log yang menjelaskan perubahan telah terdapat pada penyimpanan permanen. wal_level menentukan banyaknya informasi yang ditulis kedalam WAL. Disini saya mengaturnya menjadi hot_standby, maksudnya yaitu istilah yang digunakan untuk menggambarkan kemampuan untuk terhubung ke server dan menjalankan query read-only sementara server sedang berada dalam recovery arsip atau mode standby.
synchronous_commit (synchronous replication) adalah opsi yang memungkinkan transaksi kedua server selesai lebih cepat. Disini saya mengatur valuenya menjadi local, karena saya membuat server replikasi ini didalam server lokal.
Kemudian scroll kebawag lagi dan cari baris archive_mode dan archive command atur 2 opsi ini menjadi seperti dibawah ini
Kedua opsi ini saling terkait, karena dengan mengaktifkan archive_mode dengan cara mengubah valuenya menjadi on, ini berguna untuk mengaktifkan WAL Segment akan dikirrim ke penyimpanan arsip dengan perintah yang didefinisikan pada opsi archive_command. Maksudnya adalah Wal Segment yang ditandakan dengan %p yaitu path dari file yang akan diarsipkan akan dikirim ke /var/lib/pgsql/archive/%f . %f ini mendefinisikan nama file dari WAL Segment tersebut.
Scroll kebawah, kemudian cari baris max_wal_senders, wal_keep_segments, dan synchronus_standby_names dan atur menjadi seperti ini
max_wal_senders berguna untuk menentukan jumlah server yang digunakan sebagai replication, disini saya menggunakan 2 server, maka saya memasukkannya 2,
wal_keep_segments mendefinisikan besarnya log file yang akan dibuat, dalam hal ini satuan filenya MB, disini saya mengaturnya menjadi 10, yaitu 10MB
synchronus_standby_names berguna untuk mendefinisikan server standby yang digunakan sebagai server replika atau disebut juga server slave, disni masukkan hostname dari server slave tersebut, disini saya memasukkannya ali-n2
3. Konfigurasi pg_hba.conf untuk mengatur user untuk replication
Tambahkan 3 baris yang saya tandai dengan kotak merah, sesuaikan dengan keadaan anda
Kolom pertama menandakan host, kemudian kolom kedua beruna untuk melakukan replication, kolom ketiga mendefinisikan user yang digunakan untuk replication, masukkan sesuka hati anda, disini saya mengatur usernya menjadi ali-replica kemudian atur address atau server yang digunakan untuk replication. Disini saya memasukkan IP address dari kedua server master dan slave diikuti dengan prefix /32 karena itu hanya 1 address saja dalam network /32 tersebut. Sedangkan md5 adalah metode agar dapat melakukan autentikasi dengan password pada saat menggunakan user tersebut.
4. Restart service postgresql
5. Buat user yang tadi telah ditentukan pada pg_hba.conf dengan option --replication untuk membuat user tersebut agar digunakan untuk replikasi, sedangkan option -P berguna untuk menambahkan password untuk user tersebut
II. Konfigurasi Server Slave
1. Hentikan service postgresql, kemudian hapus semua file konfigurasi yang ada pada /var/lib/pgsql/data/ hal ini dilakukan karena kita akan melakukan sinkronisasi terhadap server master selanjutnya2. Masuk ke bash postgres, kemudian lakukan sinkronisasi server slave dengan masternya. Jadi setalah melakukan sinkronisasi ini, konfigurasi master dan slave sama. Sinkronisasinya dengan cara dibawah ini
pg_basebackup berguna untuk mengambil base backup yang ada pada server master
-h 202.108.5.91 mendefinisikan host tempat base backup berada yaitu pada server master. Disini masukkan ip atau domain server master. Dalam hal ini server master saya ipnya 202.108.5.91
-U ali-replica mendefiniskan user yang digunakan untuk sinkronisasi, yaitu user yang telah dikonfig pada pg_hba.conf di server master.
-D /var/lib/pgsql/data mendefinisikan letak file konfigurasi pada server master.
-P berguna untuk menambahkan autentikasi dengan password
--xlog berguna untuk membuat catatan terhadap semua log yang dihasilkan selama backup
kemudian masukan password user yang digunakan untuk replica kemudian keluar dari bash
3. Cek konfigurasi yang telah dikonfigurasi, apakah berhasil sinkron atau tidak dengan mengecek isi file dari direktori /var/lib/pgsql/data
4, Konfigurasi postgresql.conf pada /var/lib/pgsql/data di server slave
Cari baris hot_standby, kemudian ubah valuenya menjadi on untuk mengizinkan query pada saat recovery berlangsung. Konfigurasi ini ada hubungannya dengan wal_level pada master server.
5. Konfigurasi recovery.conf Ini bertujuan untuk mengkonfig recovery postgresql pada server slave. File ini belum ada pada /var/lib/pgsql/data/ masih ada pada /usr/share/pgsql/ copy dahulu ke /var/lib/pgsq/data/ dengan mengubah namanya yang tadinya recovery.conf.sample menjadi recovery.conf. Kemudian buka file tersebut
Cari baris restore_command, kemudian atur valuenya menjadi :
scp ipmaster:/var/lib/pgsql/archive/%f %p
Konfigurasi diatas berguna untuk mengambil wal segment pada server master melalui scp atau securecopy berbasis ssh.
Scroll lagi kebawah dan cari baris primary_conninfo, kemudian isikan valuenya menjadi host=ipmaster port=5432 user=user_yg_digunakan_untuk_replication password=password_user application_name=nama_yg_udah_ditentukan_pada_synchronus_standby_name
host=202.108.5.91 mendefinisikan ip server master, disini saya memasukannya pada ip 202.108.5.91
port=5432 mendefinisikan port yang digunakan selama proses replication disini saya memasukannya secara default yaitu port 5432
user=ali-replica mendefinisikan user yang digunakan untuk replication, disini saya memasukannya ali-replica
password=gatau mendefinisikan password user tersebut, disini saya memasukannya gatau
application_name=ali-n2 sebagai penamaan untuk replication
6. Restart service postgresql agar konfigurasi yang dilakukan berjalan
III. Pengujian & Verifikasi
1. Untuk mengecek apakah sudah berhasil join atau tidak dengan mengetikkan command sebagai berikut pada server mastercommand psql diatas adalah sebuah terminal interaktif postgreSQL untuk mengeksekusi dengan perintah -c untuk melihat application_name, state, dan sync_priority pada server master.
Nah terlihat disana application_name yang ada yaitu ali-n2 dengan state streaming dan sync_prioritynya 1 kemudian paling penting adalah sync_statenya berisi sync. Hal ini menandakan kalau ali-n2 berhasil melakukan replication.
2. Masih di server master, kemudian kita buat user beserta database baru untuk pengujian. Disini saya membuat database db-ali-tes dengan usernya ali-tes. Setelah itu buat role password user tersebut agar pada saat mengakses database tersebut dapat dilakukan dengan autenteikasi.
3. Cek database yang telah dibuat, bisa dengan mengetikkan psql -l pada kedua server master dan slave, atau bisa juga dengan phpPgAdmin kalau sudah diinstall. Untuk instalasi phpPgAdmin bisa dilihat disini.
Disini saya membuka phpPgAdmin server master dengan memasukkan user ali-tes
Nah tara... terlihat sudah database yang telah dibuat, yaitu db-ali-tes
2. Kemudian disini saya coba buka halaman phpPgAdmin pada server slave dengan memasukkan user ali-tes.
And voila... database sudah otomatis dibuat juga pada server slave
IV. Penutup
Mungkin itu kita telah membuat konfigurasi replication database PostgreSQL. Jadi kalau kita membuat database pada server master, maka otomatis database tersebut akan dibuat juga pada server slave. Jadi kaya kembar gitu, heheDengan saya membagikan tutorial tersebut semoga dapat bermanfaat untuk kita semua, amiin.

Untuk lebih jelas prosesnya bisa dilihat di video berikut ini :
Sekian Semoga Bermanfaat
loading...
Comments
Post a Comment