CARA MUDAH REPLIKASI DATABASE MENGGUNAKAN PROSTGRESQL DI LINUX UBUNTU 16.04
Hallo semua, kali ini saya mau bahas tentang bagaimana cara replikasi database dengan postgresql pada LINUX UBUNTU 16.04. Apasih Replikasi database dan kegunaannya apa?
Replikasi Database adalah suatu cara yang dilakukan untuk back-up data yang ada pada database secara real-time. Pada Replikasi Database ini mengunakan sistem :
1. Master to Slave
Master sebagai server utama dan Slave sebagai backup atau penampung data dari master. server slave tersebut hanya sebagai read-only , tidak ada kegiatan tambah,hapus atau ubah disana.
2. Master to Master
Ini dikenal dengan 4 server misal (server A, B, C, D) ketika serve A sebagai master maka server B,C dan D akan sebagai Slave. jika kita menambah data di server A maka data tersebut juga akan bertambah di server B,C dan D. begitu juga sebaliknya dengan server B,C dan D. Okay semoga mengerti ya . Langsung ajah berikut apa saja yang diperlukan dan keterangan server yang saya gunakan:
* Linux Ubuntu 16.04
* Postgresql-9.5
* 2 Server dengan OS (Ubuntu 16.04)
* 2 Server dengan OS (Ubuntu 16.04)
- 10.1.1.2 (Master)
- 10.1.1.3 (Slave)
I. Install dan Konfigurasi Server Master
1. Install terlebih dahulu postgresql dengan command line dibawah ini
sudo apt-get install postgresql-9.5
2. Jika Instalasi sudah complete, maka langkah selanjutnya adalah pastikan bahwa postrgesql nya sudah terhubung. Ikuti command line berikut menggunakan user ROOT:
systemctl enable postgresql
3. Secara Default postgresql akan menjalankan localhost (127.0.0.1) dengan posrt 5432 pada Ubuntu. Jalankan perintah ini untuk mengecek :
netstat -plntu
4. Pada gambar diatas postgresql sudah berjalan. Maka langkah selanjutya kita mengganti password user postgres. Jalankan Perintah berikut:
sudo su postgres
5. Setelah masuk ke postgres# selanjutnya jalankan perintah ini:
\password postgres
lalu cek info dari user postgres tersebut dengan perintah berikut:
\conninfo
6. Sekarang kita Konfigurasi postgres yaitu dengan user ROOT , kita change directory
cd /etc/postgresql/9.5/main/
vim postgresql.conf
Uncomment dan ubah script berikut :
listen_addresses = '10.1.1.2'
wal_level = hot_standby
wal_level = hot_standby
archive_mode = on
archive_command = 'cp %p /var/lib/postgresql/9.5/main/archive/%f'
max_wal_senders = 2 (karena saya pakai 2 server)
wal_keep_segments = 10 ( 1 segment dengan value 16 Mb)
synchronous_standby_names = 'node'
Setelah itu simpan file tersebut.
7. Pada file postgresql.conf saya sudah buat enabled/on maka kita harus membuat file directory untuk Archive . Buat directory Archive baru dan ubah permission pemilik user postgres:
mkdir -p /var/lib/postgresql/9.5/main/archive/
chmod 700 /var/lib/postgresql/9.5/main/archive/
chown -R postgres:postgres /var/lib/postgresql/9.5/main/archive/
8. Selanjutnya ubah file pg_hba.conf dengan perintah ini :
vim pg_hba.conf
# Localhost
host replication replica 127.0.0.1/32 md5
# PostgreSQL Master IP address
host replication replica 10.1.1.2/32 md5
# PostgreSQL SLave IP address
host replication replica 10.1.1.3/32 md5
Simpan dan exit.
9. Kemudian restart postgresql dengan perintah berikut:
systemctl restart postgresql
Maka postgressql sudah berjalan pada IP 10.1.1.2 atau biasanya saya pakai tanda (*) di Listen Addreses maka postgresql nya berjalan di IP 0.0.0.0:5432
Cek postgresql nya dengan cara
netstat -plntu
10. Selanjutnya buat user baru untuk Replikasinya dengan nama user replica dan password nya password. Untuk password bebas silahkan dibuat sendiri. kita masuk ke user postgres:
su su postgres
psql
CREATE USER replica REPLICATION LOGIN ENCRYPTED PASSWORD 'password';
Lalu cek user baru replica sudah punya hak akses:
\du
II. Install dan Konfigurasi Server Slave
1. Install postrgesql 9.5
2. Setelah diinstal selanjutnya masuk ke user ROOT lalu stop postgresql
systemctl stop postgresql
3. Edit File postgresql.conf dengan perintah berikut ini:
cd /etc/postgresql/9.5/main/
vim postgresql.conf
Uncomment dan edit :
listen_addresses = '10.1.1.3'
wal_level = hot_standby
synchronous_commit = local
max_wal_senders = 2
wal_keep_segments = 10
synchronous_standby_names = 'node'
hot_standby = on
Simpan file tersebut dan exit.
4. Login sebagai user postrges. Lalu ikuti perintah berikut ini
sudo su postgres
cd 9.6/
mv main main-backup
mkdir main/
chmod 700 main/
5. Selanjutnya copy data main dari Server Master ke Server Slave dengan menggunakan user replica
pg_basebackup -h 10.1.1.2 -U replica -D /var/lib/postgresql/9.5/main -P --xlog
Lalu Masukan Password:
6. Jika data sudah tercopy sempurna maka langkah selanjutnya adalah ke directory main untuk membuat file recovery.conf
cd /var/lib/postgresql/9.5/main/
vim recovery.conf
Isi File tersebut dengan script dibawah ini:
standby_mode = 'on' primary_conninfo='host=10.1.1.2 port=5432
user=replica password=password application_name=node'
restore_command = 'cp /var/lib/postgresql/9.5/main/archive/%f %p'
trigger_file = '/tmp/postgresql.trigger.5432'
Simpan file tersebut dan exit.
7. Ubah permission file tersebut:
chmod 600 recovery.conf
8. Lalu Start postgresql nya dengan perintah:
systemctl start postgresql
netstat -plntu
Data trasnfer antara Server Master dan Server Slave sudah complete.
9. Cek status Replikasi pada Server Master
sudo su postgres
select * from pg_stat_replication;
10. Testing data apakah kedua server tersebut sudah sinkron?
sudo su postgres
psql
CREATE TABLE replica_test (hakase varchar(100));
INSERT INTO replica_test VALUES ('howtoforge.com');
INSERT INTO replica_test VALUES ('This is from Master');
INSERT INTO replica_test VALUES ('pg replication by hakase-labs');
Cek data pada server Slave:
sudo su postgres
psql
Cek data replica_test dengan query berikut:
select * from replica_test;
Maka akan terlihat data yang sama seperti gambar berikut:
Untuk selanjutnya silahkan isi data pada Server Master lalu kemudian cek di Server Slave.
Oke teman- teman, sekian sharing dari saya, semoga tutorial ini sangat bermanfaat. Jangan lupa di like comment atau dibagikan , biar bermanfaat juga dengan teman-teman kita yang membutuhkan πThank you guys... see you next in the next tutorial byeeee...πππ








0 komentar :
Posting Komentar