Judul : [Lab 9.3] Database server replication pada PostgreSQL
link : [Lab 9.3] Database server replication pada PostgreSQL
[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 :
MasterOS | : | Linux CentOS 7 x64 |
IP Address (enp0s3) | : | 192.168.56.50 |
Domain | : | data.centos.dz |
OS | : | Linux CentOS 7 x64 |
IP Address (enp0s3) | : | 192.168.56.51 |
Domain | : | data2.centos.dz |
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 bashKita lihat versi dari PostgreSQL yang terinstall.
[root@dz-data-postgresql ~]# postgres -VUntuk melihat lokasi binary dari postgreSQL.
postgres (PostgreSQL) 9.5.4
[root@dz-data-postgresql ~]# which postgresAgar PostgreSQL dapat berjalan secara otomatis, kita perlu membuat scriptnya terlebih dahulu.
/opt/rh/rh-postgresql95/root/usr/bin/postgres
[root@dz-data-postgresql ~]# vi /etc/profile.d/rh-postgresql95.sh
- Isi file tersebut dengan script dibawah ini.
#!/bin/bashKita aktifkan postgresql dan jalankan postgresql server.
source /opt/rh/rh-postgresql95/enable
export X_SCLS="`scl enable rh-postgresql95 'echo $X_SCLS'`"
[root@dz-data-postgresql ~]# postgresql-setup --initdb --unit rh-postgresql95-postgresqlEdit file konfigurasi postgresql.
* Initializing database in '/var/opt/rh/rh-postgresql95/lib/pgsql/data'
* Initialized, logs are in /var/lib/pgsql/initdb_rh-postgresql95-postgresql.log
[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 = '*'
log_line_prefix = '%t %u %d'Kemudian kita enable layanan postgresql dan aktifkan layanan postgresql.
[root@dz-data-postgresql ~]# systemctl start rh-postgresql95-postgresqlBuka firewall untuk postgresql agar layanan database dapat diakses dari luar.
[root@dz-data-postgresql ~]# systemctl enable rh-postgresql95-postgresql
[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
synchronous_commit = local
archive_mode = on
archive_command = 'cp %p /var/opt/rh/rh-postgresql95/lib/pgsql/archive/%f'
max_wal_senders = 2
wal_keep_segments = 10
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 md5Restart layanan postgresql untuk memperbarui konfigurasi.
host replication replica 192.168.56.50/32 md5
host replication replica 192.168.56.51/32 md5
[root@dz-data-postgresql ~]# systemctl restart rh-postgresql95-postgresqlMasuk 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 bashKita lihat versi dari PostgreSQL yang terinstall.
[root@dz-slave1-postgresql ~]# postgres -VUntuk melihat lokasi binary dari postgreSQL.
postgres (PostgreSQL) 9.5.4
[root@dz-slave1-postgresql ~]# which postgresAgar PostgreSQL dapat berjalan secara otomatis, kita perlu membuat scriptnya terlebih dahulu.
/opt/rh/rh-postgresql95/root/usr/bin/postgres
[root@dz-slave1-postgresql ~]# vi /etc/profile.d/rh-postgresql95.sh
- Isi file tersebut dengan script dibawah ini.
#!/bin/bashKita aktifkan postgresql dan jalankan postgresql server.
source /opt/rh/rh-postgresql95/enable
export X_SCLS="`scl enable rh-postgresql95 'echo $X_SCLS'`"
[root@dz-slave1-postgresql ~]# postgresql-setup --initdb --unit rh-postgresql95-postgresqlEdit file konfigurasi postgresql.
* Initializing database in '/var/opt/rh/rh-postgresql95/lib/pgsql/data'
* Initialized, logs are in /var/lib/pgsql/initdb_rh-postgresql95-postgresql.log
[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 = '*'
log_line_prefix = '%t %u %d'Kemudian kita enable layanan postgresql dan aktifkan layanan postgresql.
[root@dz-slave1-postgresql ~]# systemctl start rh-postgresql95-postgresqlBuka firewall untuk postgresql agar layanan database dapat diakses dari luar.
[root@dz-slave1-postgresql ~]# systemctl enable rh-postgresql95-postgresql
[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 - postgresKemudian kita ambil backup dari server master.
Last login: Sab Mei 13 04:36:21 BST 2017 on pts/0
-bash-4.2$
-bash-4.2$ pg_basebackup -h 192.168.56.50 -U replica -D /var/opt/rh/rh-postgresql95/lib/pgsql/data -P --xlogKita edit file konfigurasi postgresql lagi.
Password:
38893/38893 kB (100%), 1/1 tablespace
[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 = onSalin 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.confKemudian 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'
standby_mode = on
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-postgresqlKita 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;"Kita coba buat beberapa perubahan pada server master.
application_name | state | sync_priority | sync_state
------------------+-----------+---------------+------------
tiruan1 | streaming | 1 | sync
(1 row)
[root@dz-data-postgresql ~]# su - postgresDan kemudian kita cek pada server slave apakah sudah melakukan synchronize.
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)
[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