[Lab 9.3] Database server replication pada PostgreSQL

[Lab 9.3] Database server replication pada PostgreSQL - Hallo sahabat Another Stuff, Pada Artikel yang anda baca kali ini dengan judul [Lab 9.3] Database server replication pada PostgreSQL, kami telah mempersiapkan artikel ini dengan baik untuk anda baca dan ambil informasi didalamnya. mudah-mudahan isi postingan Artikel Admin Server, yang kami tulis ini dapat anda pahami. baiklah, selamat membaca.

Judul : [Lab 9.3] Database server replication pada PostgreSQL
link : [Lab 9.3] Database server replication pada PostgreSQL

Baca juga


[Lab 9.3] Database server replication pada PostgreSQL

Pada database ada istilah replication yang artinya kita dapat membuat lebih dari satu server database yang isinya sama, yang satu menjadi server utama (master) dan sisanya merupakan server cadangan (slave), tujuan dibuatnya server master dan slave adalah agar bersifat redudant, ketika salah satu server mati maka masih ada pengganti lainnya.

Cara kerja master slave ini, antara server master dengan slave akan melakukan transfer database sehingga kedua server memiliki isi yang sama persis. Pada server database PostgreSQL kita dapat melakukan konfigurasi replication. Berikut ini adalah sedikit informasi server yang akan saya konfigurasi :

Master
    OS:Linux CentOS 7 x64
    IP Address (enp0s3):192.168.56.50
    Domain:data.centos.dz
Slave
    OS:Linux CentOS 7 x64
    IP Address (enp0s3):192.168.56.51
    Domain:data2.centos.dz
Kita mulai konfigurasi pada kedua server tersebut :

Master

    Pertama yang kita lakukan adalah konfigurasi IP Address agar server dapat terhubung dengan jaringan dan juga terhubung dengan Internet. Edit file konfigurasi /etc/sysconfig/network-scripts/ifcfg-enp0s3
    [root@dz-data-postgresql ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 
    • Edit dan tambahkan beberapa opsi, dan sesuaikan IP Address dengan jaringan yang anda gunakan.
    • ONBOOT=yes
      BOOTPROTO=static
      IPADDR=192.168.56.50
      NETMASK=255.255.255.0
      GATEWAY=192.168.56.1
      DNS1=192.168.56.50
      DNS2=8.8.8.8

    Repo SCLo

    Kita akan mengaktifkan repo SCLo pada server ini. Langsung saja install repo sclo pada server dengan perintah ini :
    [root@dz-data-postgresql ~]# yum -y install centos-release-scl-rh centos-release-scl

    Install PostgreSQL

    Sekarang kita lanjut pada penginstallan postgresql, ketikan perintah ini untuk menginstall postgresql yang ada di repository sclo.
    [root@dz-data-postgresql ~]# yum --enablerepo=centos-sclo-rh -y install rh-postgresql95-postgresql-server.
    Paket PostgreSQL yang terinstall terdapat didalam folder /opt untuk menggunakannya kita perlu load beberapa variable dengan perintah ini.
    [root@dz-data-postgresql ~]# scl enable rh-postgresql95 bash
    Kita lihat versi dari PostgreSQL yang terinstall.
    [root@dz-data-postgresql ~]# postgres -V
    postgres (PostgreSQL) 9.5.4
    Untuk melihat lokasi binary dari postgreSQL.
    [root@dz-data-postgresql ~]# which postgres
    /opt/rh/rh-postgresql95/root/usr/bin/postgres
    Agar PostgreSQL dapat berjalan secara otomatis, kita perlu membuat scriptnya terlebih dahulu.
    [root@dz-data-postgresql ~]# vi /etc/profile.d/rh-postgresql95.sh
    • Isi file tersebut dengan script dibawah ini.
    • #!/bin/bash

      source /opt/rh/rh-postgresql95/enable
      export X_SCLS="`scl enable rh-postgresql95 'echo $X_SCLS'`"
    Kita aktifkan postgresql dan jalankan postgresql server.
    [root@dz-data-postgresql ~]# postgresql-setup --initdb --unit rh-postgresql95-postgresql
    * Initializing database in '/var/opt/rh/rh-postgresql95/lib/pgsql/data'
    * Initialized, logs are in /var/lib/pgsql/initdb_rh-postgresql95-postgresql.log
    Edit file konfigurasi postgresql.
    [root@dz-data-postgresql ~]# nano /var/opt/rh/rh-postgresql95/lib/pgsql/data/postgresql.conf 
    • Pada baris 59 ganti localhost menjadi * agar dapat diakses secara publik, dan hapus tanda pagar dibelakangnya.
    • listen_addresses = '*' 
    • Pada baris 421, kita edit format untuk logging setiap kejadian kejadian pada database server.
    • log_line_prefix = '%t %u %d'
    Kemudian kita enable layanan postgresql dan aktifkan layanan postgresql.
    [root@dz-data-postgresql ~]# systemctl start rh-postgresql95-postgresql
    [root@dz-data-postgresql ~]# systemctl enable rh-postgresql95-postgresql
    Buka firewall untuk postgresql agar layanan database dapat diakses dari luar.
    [root@dz-data-postgresql ~]# firewall-cmd --add-service=postgresql --permanent
    [root@dz-data-postgresql ~]# firewall-cmd --reload

    Master setup

    Kita edit kembali file konfiguasi postgresql
    [root@dz-data-postgresql ~]# nano /var/opt/rh/rh-postgresql95/lib/pgsql/data/postgresql.conf 
    • Pada baris ke 177, hilangkan tanda pagar dan ganti seperti ini.
    • wal_level = hot_standby   
    • Pada baris ke 180 hilangkan tanda pagar dan ganti menjadi local.
    • synchronous_commit = local 
    • Pada baris ke 210 hilangkan tanda pagar dan ganti menjadi on untuk mengaktifkan archive mode.
    • archive_mode = on  
    • Pada baris ke 212 hilangkan tanda pagar dan ganti untuk mengganti perintah mendapatkan archive.
    • archive_command = 'cp %p /var/opt/rh/rh-postgresql95/lib/pgsql/archive/%f' 
    • Pada baris ke 228 hilangkan tanda pagar dan ganti menjadi jumlah 1 + banyaknya server slave.
    • max_wal_senders = 2  
    • Pada baris ke 230 hilangkan tanda pagar dan ganti. Ini untuk ukuran segmen file log.
    • wal_keep_segments = 10  
    • Baris ke 242 hilangkan tanda pagar dan beri nama server slave sesuka hati.
    • synchronous_standby_names = 'tiruan1'
    Lalu edif file pg_hba.conf
    [root@dz-data-postgresql ~]# nano /var/opt/rh/rh-postgresql95/lib/pgsql/data/pg_hba.conf 
    • Tambahkan script ini pada bagian paling bawah, dan sesuaikan IP Address server master dengan sever replica slave.
    • host    replication     replica          127.0.0.1/32            md5
      host replication replica 192.168.56.50/32 md5
      host replication replica 192.168.56.51/32 md5
    Restart layanan postgresql untuk memperbarui konfigurasi.
    [root@dz-data-postgresql ~]# systemctl restart rh-postgresql95-postgresql
    Masuk pada terminal database kemudian kita buat sebuah user khusus untuk keperluan replica.
    [root@dz-data-postgresql ~]# su - postgres
    Last login: Min Mei 14 00:30:32 BST 2017 on pts/0
    -bash-4.2$ createuser --replication -P replica
    Enter password for new role:
    Enter it again:

Slave

    Pertama yang kita lakukan adalah konfigurasi IP Address agar server dapat terhubung dengan jaringan dan juga terhubung dengan Internet. Edit file konfigurasi /etc/sysconfig/network-scripts/ifcfg-enp0s3
    [root@dz-slave1-postgresql ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 
    • Edit dan tambahkan beberapa opsi, dan sesuaikan IP Address dengan jaringan yang anda gunakan.
    • ONBOOT=yes
      BOOTPROTO=static
      IPADDR=192.168.56.51
      NETMASK=255.255.255.0
      GATEWAY=192.168.56.1
      DNS1=192.168.56.50
      DNS2=8.8.8.8

    Repo SCLo

    Kita akan mengaktifkan repo SCLo pada server ini. Langsung saja install repo sclo pada server dengan perintah ini :
    [root@dz-slave1-postgresql ~]# yum -y install centos-release-scl-rh centos-release-scl

    Install PostgreSQL

    Sekarang kita lanjut pada penginstallan postgresql, ketikan perintah ini untuk menginstall postgresql yang ada di repository sclo.
    [root@dz-slave1-postgresql ~]# yum --enablerepo=centos-sclo-rh -y install rh-postgresql95-postgresql-server.
    Paket PostgreSQL yang terinstall terdapat didalam folder /opt untuk menggunakannya kita perlu load beberapa variable dengan perintah ini.
    [root@dz-slave1-postgresql ~]# scl enable rh-postgresql95 bash
    Kita lihat versi dari PostgreSQL yang terinstall.
    [root@dz-slave1-postgresql ~]# postgres -V
    postgres (PostgreSQL) 9.5.4
    Untuk melihat lokasi binary dari postgreSQL.
    [root@dz-slave1-postgresql ~]# which postgres
    /opt/rh/rh-postgresql95/root/usr/bin/postgres
    Agar PostgreSQL dapat berjalan secara otomatis, kita perlu membuat scriptnya terlebih dahulu.
    [root@dz-slave1-postgresql ~]# vi /etc/profile.d/rh-postgresql95.sh
    • Isi file tersebut dengan script dibawah ini.
    • #!/bin/bash

      source /opt/rh/rh-postgresql95/enable
      export X_SCLS="`scl enable rh-postgresql95 'echo $X_SCLS'`"
    Kita aktifkan postgresql dan jalankan postgresql server.
    [root@dz-slave1-postgresql ~]# postgresql-setup --initdb --unit rh-postgresql95-postgresql
    * Initializing database in '/var/opt/rh/rh-postgresql95/lib/pgsql/data'
    * Initialized, logs are in /var/lib/pgsql/initdb_rh-postgresql95-postgresql.log
    Edit file konfigurasi postgresql.
    [root@dz-slave1-postgresql ~]# nano /var/opt/rh/rh-postgresql95/lib/pgsql/data/postgresql.conf 
    • Pada baris 59 ganti localhost menjadi * agar dapat diakses secara publik, dan hapus tanda pagar dibelakangnya.
    • listen_addresses = '*' 
    • Pada baris 421, kita edit format untuk logging setiap kejadian kejadian pada database server.
    • log_line_prefix = '%t %u %d'
    Kemudian kita enable layanan postgresql dan aktifkan layanan postgresql.
    [root@dz-slave1-postgresql ~]# systemctl start rh-postgresql95-postgresql
    [root@dz-slave1-postgresql ~]# systemctl enable rh-postgresql95-postgresql
    Buka firewall untuk postgresql agar layanan database dapat diakses dari luar.
    [root@dz-slave1-postgresql ~]# firewall-cmd --add-service=postgresql --permanent
    [root@dz-slave1-postgresql ~]# firewall-cmd --reload

    Slave setup

    Masuk pada terminal database postgresql.
    [root@dz-slave1-postgresql ~]# su - postgres
    Last login: Sab Mei 13 04:36:21 BST 2017 on pts/0
    -bash-4.2$
    Kemudian kita ambil backup dari server master.
    -bash-4.2$ pg_basebackup -h 192.168.56.50 -U replica -D /var/opt/rh/rh-postgresql95/lib/pgsql/data -P --xlog
    Password:
    38893/38893 kB (100%), 1/1 tablespace
    Kita edit file konfigurasi postgresql lagi.
    [root@dz-slave1-postgresql ~]# vi /var/opt/rh/rh-postgresql95/lib/pgsql/data/postgresql.conf 
    • Pada baris ke 251 uncomment dan ganti menjadi on.
    • hot_standby = on   
    Salin file konfigurasi contoh recovery.
    [root@dz-slave1-postgresql ~]# cp /opt/rh/rh-postgresql95/root/usr/share/pgsql/recovery.conf.sample /var/opt/rh/rh-postgresql95/lib/pgsql/data/recovery.conf
    Kemudian kita edit file konfigurasi recovery tadi.
    [root@dz-slave1-postgresql ~]# nano /var/opt/rh/rh-postgresql95/lib/pgsql/data/recovery.conf 
    • Pada baris ke 44 uncomment dan ganti perintah untuk mendapatkan archive.
    • restore_command = 'scp 192.168.56.50:/var/opt/rh/rh-postgresql95/lib/pgsql/archive/%f %p'     
    • Pada baris 116 uncomment dan ganti menjadi on.
    • standby_mode = on
    • Pada baris 123 uncomment dan ganti isinya dengan connection info ke server master.
    • primary_conninfo = 'host=192.168.56.50 port=5432 user=replica password=password application_name=tiruan1' 
    Restart layanan PostgreSQL untuk memperbarui konfigurasi.
    [root@dz-slave1-postgresql ~]# systemctl restart rh-postgresql95-postgresql
Kita cek pada server master apakah sistem replication sudah berjalan dengan baik.
-bash-4.2$ psql -c "select application_name, state, sync_priority, sync_state from pg_stat_replication;"
application_name | state | sync_priority | sync_state
------------------+-----------+---------------+------------
tiruan1 | streaming | 1 | sync
(1 row)
Kita coba buat beberapa perubahan pada server master.
[root@dz-data-postgresql ~]# su - postgres
Last login: Min Mei 14 00:30:32 BST 2017 on pts/0
-bash-4.2$ createuser dzikra
-bash-4.2$ createdb dzdb -O dzikra
-bash-4.2$ psql -l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
dzdb | dzikra | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 |
postgres | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 |
template0 | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
Dan kemudian kita cek pada server slave apakah sudah melakukan synchronize.
[root@dz-slave1-postgresql ~]# su - postgres
Last login: Min Mei 14 00:47:34 BST 2017 on pts/0
-bash-4.2$ psql -l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
dzdb | dzikra | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 |
postgres | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 |
template0 | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)



Demikianlah Artikel [Lab 9.3] Database server replication pada PostgreSQL

Sekianlah artikel [Lab 9.3] Database server replication pada PostgreSQL kali ini, mudah-mudahan bisa memberi manfaat untuk anda semua. baiklah, sampai jumpa di postingan artikel lainnya.

Anda sekarang membaca artikel [Lab 9.3] Database server replication pada PostgreSQL dengan alamat link https://anothers-stuff.blogspot.com/2017/05/lab-93-database-server-replication-pada.html
close
==Close==