Cara Replikasi PostgreSQL

Berikut ini diagram jaringan untuk pengaturan replikasi Master / Slave PostgreSQL. Di sini saya memiliki dua server, pg-master adalah server Master PostgreSQL dan pg-slave adalah server Slave PostgreSQL. Tentu saja, Anda dapat memiliki lebih banyak server Slave, tetapi demi kesederhanaan saya akan memiliki satu server Slave.
Server Master PostgreSQL Master pg-master saya memiliki alamat IP 192.168.199.137 dan server PostgreSQL Slave pg-master memiliki alamat IP 192.168.199.138. Ingat ini dan buat perubahan jika perlu untuk pengaturan Anda.

Installing PostgreSQL:

Saya menggunakan server Ubuntu 18.04 LTS. Anda dapat menggunakan distribusi Linux apa pun yang Anda inginkan. Hanya perintahnya yang sedikit berbeda.
Anda harus menginstal PostgreSQL di semua server yang akan menjadi bagian dari pengaturan replikasi. Dalam kasus saya, dua server pg-master, dan pg-slave.
Saya akan menunjukkan kepada Anda cara menginstal PostgreSQL pada mesin pg-master. Langkah-langkahnya sama juga untuk mesin pg-slave.
Di server pg-master:
Pertama, Anda harus jalankan peritnah berikut :

menambahkan repositori paket PostgreSQL di mesin Ubuntu Anda, ingat saya menggunakan Ubuntu 18.04. Silahkan baca di sini jika versi Linux anda beda.
silahkan anda buat file berikut :

$ nano/etc/apt/sources.list.d/pgdg.list

Dan tambahkan baris perintah berikut :

deb https://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main

Import Repositori Key dan Update paket :

$ wget –quiet -O – https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add –

Key GPG seharusnya ditambahkan.

Sekarang perbarui cache repositori paket APT dengan perintah berikut:
$ sudo apt update

Cache repositori paket APT harus diperbarui.

Sekarang instal server database PostgreSQL dengan perintah berikut:
Untuk PostgreSQL 10 (Latest Stable):
$ sudo apt install postgresql-10
Catatan : saya replikasi menggunakan PostgreSQL 10 masih mengalami error.

Untuk PostgreSQL 11 (masih versi Beta):
$ sudo apt -y install postgresql-11

Tekan y dan tekan <Enter> untuk melanjutkan.

PostgreSQL telah terinstall.

Seting kata sandi untuk user postgres dengan perintah berikut:
$ sudo passwd postgres

Sekarang masukkan kata sandi. Password seharusnya sudah terseting.

JANGAN LUPA untuk melakukan hal yang sama ke server pg-slave sebelum Anda melanjutkan.

Setting di Server Master PostgreSQL:

Sekarang login sebagai pengguna postgres:
$ su – postgres

Buat user replication:
$ psql -c “CREATE USER replication REPLICATION LOGIN CONNECTION LIMIT 1 ENCRYPTED
PASSWORD ‘PASSWORD_ANDA’;”

buka file /etc/postgresqk/11/main/pg_hba.conf :
$ nano /etc/postgresqk/11/main/pg_hba.conf

tambahkan kode berikut :
host    replication     replication   192.168.199.138/24   md5

kemudian edit juga:
$ nano /etc/postgresqk/11/main/postgresql.conf

Sekarang temukan dan ubah pengaturan berikut (hapus #) :
listen_addresses = ‘localhost,192.168.199.137’
wal_level = replica
max_wal_senders = 10
wal_keep_segments = 64 Sekarang restart PostgreSQL
server di server pg-master :
$ systemctl restart postgresql

Seting di Slave Server:

Silahkan anda login postgres user di  server pg-slave :
$ su – postgres

Stop layanan PostgreSQL di server pg-slave:
$ systemctl stop postgresql

Sekarang edit  /etc/postgresqk/11/main/pg_hba.conf :
$ nano /etc/postgresqk/11/main/pg_hba.conf

Tambahan kode berikut di server pg-master :
host    replication     replication     192.168.199.137/24   md5

Silahkan buka file PostgreSQL configuration :
$ nano /etc/postgresqk/11/main/postgresql.conf

Cari baris berikut, uncomment (#).
listen_addresses = ‘localhost,192.168.199.138’
wal_level = replica
max_wal_senders = 10
wal_keep_segments = 64
hot_standby = on Silahkan anda ke  data_directory:
$ cd /var/lib/postgresql/11/main

Hapus seluruh isi direktori :
$ rm -rfv *

Silahkan anda copy data dari server pg-master ke server pg-slave di folder data_directory:
$ pg_basebackup -h 192.168.199.137 -D /var/lib/postgresql/11/main/ -P -U
replication –wal-method=fetch

Isikan password  postgres anda dari pg-master dan tekan <Enter>.

Sekarang buat file recovery.conf di folder data_directory :
$ nano recovery.conf

tambahkan baris kode berikut:
standby_mode          = ‘on’
primary_conninfo      = ‘host=192.168.199.137 port=5432 user=replication password=123’
trigger_file = ‘/tmp/MasterNow’

Start kembali server PostgreSQL Slave :
$ systemctl start postgresql

Kita Uji Coba Tes Replication:

Silahkan buka server pg-master, anda dapat melihat server Slave terdeteksi.

Contoh Lakukan hal berikut :
Buat users table:
CREATE TABLE users (
name VARCHAR(30),
country VARCHAR(2)
);

Lakukan insert dummy data ke table users :
INSERT INTO users VALUES(‘Shahriar’, ‘BD’);
INSERT INTO users VALUES(‘Shovon’, ‘BD’);
INSERT INTO users VALUES(‘Kelly’, ‘US’);
INSERT INTO users VALUES(‘Nina’, ‘IN’);
INSERT INTO users VALUES(‘Kesha’, ‘CA’);

Sekarang anda lihat, data telah masuk di Master server pg-master:
# \x off
# select * from users;

Sekarang anda ke  Slave server pg-slave, login ke concole PostgreSQL :
$ psql

Coba anda cek data yang baru saja dimasukkan di MASTER:
$ select * from users; huraaa…berhasil….data tampil di server Slave. Replication berhasil….

Generating SSH Keys (ini tidak wajib anda lakukan, suka2 anda aja hehehe):

Anda dapat masuk ke server Master dari server Slave dan sebaliknya tanpa kata sandi jika Anda membuat dan menyalin kunci SSH ke server yang berlawanan. Ini berguna untuk keperluan administrasi. Saya hanya menunjukkan kepada Anda bagaimana melakukannya di server Master. Prosedurnya sama. Hasilkan kunci SSH pada server Master dan Slave saat login sebagai pengguna postgres. $ ssh-keygen

Tetap tekan tombol <Enter>. SSH key telah ter-generated.

Dari server pg-master, copy SSH key ke server pg-slave :
$ ssh-copy-id 192.168.199.138 Dari server pg-slave, copy SSH key ke server pg-master :
$ ssh-copy-id 192.168.199.137 Tekan yes dan tekan <Enter>.

Sekarang ketikkan kata sandi untuk server yang Anda sambungkan untuk pengguna postgres dan tekan  <Enter>.

Begitulah cara Anda mengkonfigurasi replikasi Master / Slave di PostgreSQL 11. Terima kasih telah membaca artikel ini.

Source:
1. https://www.postgresql.org/
2. https://linuxhint.com/setup_postgresql_replication/ 

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

36 − 30 =