Assalamu'alaikum warahmatullah wabarakatuh Ciiiee, kali ini saya akan share membuat Replication Settings di PostgreSQL apache CentOS...

CentOS 7 : 9.3 Replication Settings On PostgreSQL Apache Centos7

Assalamu'alaikum warahmatullah wabarakatuh

Ciiiee, kali ini saya akan share membuat Replication Settings di PostgreSQL apache CentOS. Replication Settings adalah membuat konfigurasi dari Database PostgreSQL seakan Database tersebut dibuat CLONE atau Replika nya. Kita akan menggunakan 2 Server CentOS. 1 Sebagai Master database Server. Dan 1 lagi berfungsi sebagai SLAVE atau node1. Kita akan membuat seakan node1 itu mirip dengan Server Master. Kuyy kita praktek.

Sebelum praktek, ente tau gak ?? Berikut adalah material yang saya gunakan


      • 1. Install DNS untuk MASTER, tutor DISINI
      • 2. Install Apache, tutor DISINI
      • 3. Install phpPgAdmin dan juga PostgreSQL DISINI dan DISINI
      • 4. CentOS dengan mode Super User
      • 5. Koneksi Internet

Berikut adalah topologi yang saya akan gunakan..



Step by Step nya :

    1. 1. Konfigurasi Menambahkan DNS di Master
    2. 2. Konfigurasi Replication Settings di Master
    3. 3. Konfigurasi Replication Settings di Node1
    4. 4. Menguji coba apakah sudah saling terhubung dengan Master
    5. 5. Uji Coba di Client


CUUUUUYYYYY CAPCUUUUSS!!!!

Menambahkan DNS di Master

1. Tambahkan pada forward nya..


2. Dan juga reverse nya..


systemctl restart named
nslookup node1.networknjay.com



Konfigurasi Replication Settings di Master / 172.16.11.115


1. Masuk mode "SU" dan edit sedikit pada direktori berikut.
nano /var/opt/rh/rh-postgresql95/lib/pgsql/data/postgresql.conf



2. Menuju ke baris "59" pada kata "listen_address" menjadi seperti ini.
 Keterangan :
- listen_addresses adalah sintak yang berfungsi untuk mengizinkan IP itu boleh mengakses database atau tidak.
- "*" adalah tanda untuk mengizinkan semua nya mengakses database tersebut. Bisa juga diganti "localhost" bila anda hanya ingin Server anda sendiri yang memanagemen databasenya.



3. Menuju ke baris selanjutnya "172" dan "175". Pada kata "wal_level" dan "synchronous_commit". Edit menjadi demikian
 Keterangan:
WAL atau Write Ahead Log

- wal_level adalah memilih mode apa yang ingin anda jalankan untuk database nya. Anda bisa memilih opsi lain seperti "minimal, hot_standby, archive, atau logical"
- "hot_standby" adalah mode untuk server utama atau master, yang nantinya database didalam server ini akan disingkronisasikan ke semua host replica. Sintak ini mengizinkan host membaca database didalam postgresql
- synchoronous_commit adalah sintak untuk memilih kemana server master ini disngkronkan. Karena ini master, Yaa kita singkronin ke dirinya sendiri :v
- "local" lokasi singkronisasi atau database yang dimiliki.




4. Menuju ke baris "204" dan "205" pada kata "archive_mode" dan "archive_command". Edit menjadi demikian..
 Keterangan :
- Archiving adalah pengaturan untuk direktori cache dari database. Settingan ini sangat diperlukan pada Replication Settings.  Jadi ya, kalau kita merubah settingan database, maka akan terkirim log nya ke file tersebut. Dan Replication settings akan menampilkan tabel database berdasarkan archive dari mode ini.
- archive_mode adalah sintak untuk mengaktifkan atau menonaktifkan fitur ini. Bisa anda rubah kata "on" menjadi "always" (hampir gak ada bedanya) atau dengan kata "off" untuk mematikan.
- archive_command adalah sintak untuk menentukan file segment nya. (KONFIGURASI ARCHIVE NYA)




5. Menuju ke baris "222" dan "224" pada kata "max_wal_senders" dan "wal_keep_segments". Edit menjadi demikian.
 Keterangan :
Parameter ini bisa diset pada server manapun yaitu mengirim data replikasi ke satu atau lebih server standby. Master selalu merupakan server pengirim, jadi parameter ini harus selalu disetel pada master. Peran dan makna parameter ini tidak berubah setelah standby menjadi master.
Max_wal_senders 
Menentukan jumlah maksimum koneksi konkuren dari server siaga atau basis cadangan streaming klien (yaitu, jumlah maksimum proses pengirim WAL yang berjalan bersamaan). Defaultnya adalah nol, artinya replikasi dinonaktifkan. 
Wal_keep_segments
Menentukan jumlah minimum segmen file log yang tersimpan di direktori pg_xlog, jika server siaga perlu mengambilnya untuk streaming replikasi. 



6. Lanjut terus ke baris "238" pada kata "synchoronous_standby_names". Ini yang terakhir.. Ubah menjadi.. Dan kemudian simpan dan keluar.
 Keterangan : 
Parameter ini dapat diatur pada master / primary server yaitu mengirim data replikasi ke satu atau lebih server standby. 
Sinkron_standby_names ( string )
Menentukan daftar nama siaga yang dipisahkan koma yang dapat mendukung replikasi sinkron , lebih ke hostname dari slave  aja sih.




7. Edit pada direktori /var/opt/rh/rh-postgresql95/lib/pgsql/data/pg_hba.conf

nano /var/opt/rh/rh-postgresql95/lib/pgsql/data/pg_hba.conf



8. Menuju ke baris paling bawah. Yaitu baris ke "86" pada kata "replication".
 Keterangan :

-lokal
Catatan ini cocok dengan upaya koneksi menggunakan soket Unix-domain. Tanpa catatan jenis ini, koneksi soket Unix-domain dilarang.
-172.16.11.... alamat
Rekaman ini cocok dengan upaya koneksi yang dilakukan dengan menggunakan TCP / IP. Catatan host cocok dengan upaya SSL atau non- SSL .



9. Lalu edit menjadi seperti ini.
 Keterangan :

Ini adalah cluster untuk Replikanya.  Kenapa saya menggunakan ip dengan "/32" padahal ip host replication itu "/24" ? Karena yang saya isikan berupa HOST TUNGGAL. Karena kita memakai IPV4, maka berapapun class atau subnettingnya, harus diisi dengan /32.
- md5 maksudnya ialah tipe autentikasinya. Karena saya gak mau ada sembarangan orang akses, akhirnya saya enkripsi dengan user dan password yang ada dengan md5



10. Restart aplikasi postgresql.

systemctl restart rh-postgresql95-postgresql


11. Lalu masuk ke postgre-nya. Masukkan juga password nya. Masukkan perintah untuk membuat user replication..

su - postgres
createuser --replication -P replica



Konfigurasi Node1/ Slave / 172.16.11.116


1. Menuju ke direktori penyimpanan Database Postgre pada node1. Lalu hapus semua Databasenya.
cd /var/opt/rh/rh-postgresql95/lib/pgsql/data
rm -rf *




2. Masuk ke postgresql nya. Lalu kita akan ambil konfigurasi Replicanya dari Master. Kita akan mencoba meng-singkronisasikan dari Master ke Slave.
su - postgres
pg_basebackup -h 172.16.11.115 -U replica -D /var/opt/rh/rh-postgresql95/lib/pgsql/data/ -P --xlog
 Keterangan :
Pg_basebackup digunakan untuk mengambil basis backup dari cluster database PostgreSQL yang sedang berjalan 

-h host

--host = host
Menentukan nama host mesin tempat server dijalankan. Jika nilainya dimulai dengan garis miring, maka digunakan sebagai direktori untuk soket domain Unix. Defaultnya diambil dari variabel lingkungan PGHOST, jika diset, jika koneksi Unix domain socket dicoba.


- 172.16.11.115
 adalah IP master
- U atau Username

Nama pengguna untuk menyambung sebagai
-D direktori
--pgdata = direktori
Direktori untuk menulis output ke Pg_basebackup akan membuat direktori dan direktori induk jika perlu. Direktori mungkin sudah ada, tapi ini adalah kesalahan jika direktori sudah ada dan tidak kosong.
--xlog
Menggunakan opsi ini setara dengan penggunaan -X dengan metode fetch .
-P atau Progress
Mengaktifkan pelaporan kemajuan Mengaktifkan ini akan memberikan perkiraan laporan kemajuan selama pencadangan. 




3. Nah, buka file tersebut.
nano /var/opt/rh/rh-postgresql95/lib/pgsql/data/postgresql.conf




4. Menuju kebaris "247" pada kata "hot_standby". Ubah menjadi




5. Lalu copi file recovery.conf.sample menjadi recovery.conf . Kita akan menggunakan file recovery ini, yang nantinya semua database yang ada adalah database yang berada pada Master.
cp /opt/rh/rh-postgresql95/root/usr/share/pgsql/recovery.conf.sample /var/opt/rh/rh-postgresql95/lib/pgsql/data/recovery.conf




6. Kita edit sedikit pada recovery.conf
nano /var/opt/rh/rh-postgresql95/lib/pgsql/data/recovery.conf




7. Menuju ke baris "44" pada kata "restore_command". Kita rubah menjadi..
 Keterangan :
- restore_command (string)
Perintah shell dijalankan untuk mengambil segmen file WAL yang diarsipkan. Parameter ini diperlukan untuk pemulihan arsip, tapi opsional untuk streaming replikasi. Setiap % f dalam string diganti dengan nama file yang akan diambil dari arsip, dan setiap % p diganti dengan nama tujuan jalur salin pada server. (Nama path relatif terhadap direktori kerja saat ini, yaitu direktori data cluster). 





8. Menuju ke baris "116" pada kata "standby_mode". Kita rubah menjadi..
 Keterangan :
standby_mode (boolean)
Menentukan apakah akan memulai server PostgreSQL sebagai standby. Jika parameter ini adalah pada , server tidak akan berhenti pemulihan ketika akhir arsip WAL tercapai, namun akan terus berusaha untuk melanjutkan pemulihan dengan mengambil segmen WAL baru menggunakan restore_command dan / atau dengan menghubungkan ke server utama sebagaimana ditentukan oleh primary_conninfo pengaturan .



9. Menuju ke baris "123" pada kata "primary_conninfo". Ubah menjadi..
 Keterangan :
primary_conninfo (string)
String koneksi harus menentukan nama host (atau alamat) server utama, serta nomor port jika tidak sama dengan default server standby. 


10. Simpan dan keluar. Lalu restart postgresql nya.
systemctl restart rh-postgresql95-postgresql





Testing apakah Slave sudah terhubung ke Master

Masuk ke postgresql nya. Lalu ketikkan perintah..
nano /etc/httpd/conf.d/phpPgAdmin.conf





UjiCoba Di Client

Menggunakan Windows 10 PRO Original dengan aplikasi Chrome. Saya mencoba mengakses Database.

1. Buka "www.networknjay.com/phpPgAdmin" dan Login. Masuk menggunakan User "ican" atau sesuaikan dengan user postgresql. Kita akan lihat, apakah ke-2 server ini akan mengsinkronisasikan database milik nya. Lalu klik "Schemas" > Lalu "Create Schema".





2. Masukkan nama Database nya, owner / pemilik dari database ini, dan juga deskripsi untukdatabasenya.




3. Perhatikan User nya, dan juga tabel dari databasenya. Wokeehhh.. Menuju ke node1 nyaa...




4. Wokehh, login dengan user yang sama tadi pada domain yang berbeda "node1.networknjay.com/phpPgAdmin"




5. Lalu lihat tabel database nyaa... Apakah sama dengan yang telah kita buat di master.. ??? TERNYATA SAMAA!!!




SEKIAN, AMALKAN ILMUNYA YAKKK...

0 comments: