Friday, April 27, 2018

Master Slave Postgresql di Centos 7


Master Slave Postgresql

1.       Install dua buah server linux centos

2.       Cek port ethernet yang digunakan untuk nat dan internet host only dengan mengetik perintah
#nmcli d

3.        Setting ip dhcp pada port nat, digunakan untuk mendownload package yum.

Ubah konfigurasi dengan menggunakan perintah dibawah ini :

#vim  /etc/sysconfig/network-script/ifcfg-[port]
Contoh :  #vim  /etc/sysconfig/network-script/ifcfg-enp0s3

Ubah ONBOOT=NO à ONBOOT=YES


Kemudian ketik :wq untuk save dan keluar dari text editor vim.

1.       Restart service mysql dengan perintah dibawah ini :
#service network restart

2.       Menambahkan repository postgresql

#yum -y install https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

3.       Menginstall aplikasi postgresql

# yum -y install postgresql96-server postgresql96-contrib

4.       Sebelum merunning postgresql maka pindahkan properties postgresql direktori dari '/usr/pgsql-9.6/bin' ke 'postgresql96-setup' .

#cd /usr/pgsql-9.6/bin

#./postgresql96-setup initdb

5.       Selanjutnya jalankan service postgresql

#systemctl start postgresql-9.6
#systemctl enable postgresql-9.6

6.       Lakukan pengecekan Postgresql berjalan di 5432 dengan state LISTEN dengan cara :

#netstat –plntu

7.       Apabila service netstat belum tersedia, maka harus lakukan penginstallan.

#yum -y install net-tools

8.       Ubah config di pg_hba.conf


# TYPE  DATABASE        USER            ADDRESS                 METHOD


# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 ident

1.       Login postgresql

# psql –Upostgres –h127.0.0.1

2.       Kemudian running postgresql

su - postgres

psql

3.       Selanjutnya ubah password pada postgresql

\password postgres
Enter new password:

4.       Selanjutnya mengaktifkan firewall dan mengijinkan aplikasi tersebut pada firewall.

firewall-cmd --add-service=postgresql --permanent
firewall-cmd –reload

5.       Cek apakah service tersebut sudah tersetting dengan benar.

firewall-cmd --list-all

6.       Mengubah ip dynamic ke static.

1 CentOS 7 server

Master - Read and Write Permission - IP: 192.168.56.10

1 CentOS 7 server

Slave - Only Read Permission- IP: 192.168.56.11

Root Privileges

*sebelumnya disable port ethernet untuk ip dhcp yang sebelumnya dihidupkan.

*masuk ke settingan properties Ethernet

#vim /etc/sysconfig/network-script/ifcfg-[port]
#vim /etc/sysconfig/network-script/ifcfg-enp0s3

Dengan mengubah ONBOOT=YES à ONBOOT=NO

*perintah edit port Ethernet :

#vim /etc/sysconfig/network-script/ifcfg-enp0s8

Kemudian edit port Ethernet untuk ip local :


1.       Konfigurasi master
Pindah ke direktori  '/var/lib/pgsql/9.6/data'  kemudian edit  file konfigurasi 'postgresql.conf'
cd /var/lib/pgsql/9.6/data
#vim postgresql.conf
2.       Setting konfigurasi postgresql master


# listen_addresses = ‘192.168.56.10’
listen_addresses = ‘*’
wal_level = hot_standby

synchronous_commit = local

archive_mode = on
archive_command = 'rsync -a %p 192.168.56.11:/var/lib/pgsql/data/archive/%f'

max_wal_senders = 2
wal_keep_segments = 10


#nama database yang digunakan 'pgslave01'
synchronous_standby_names = 'pgslave01'
*untuk asynchrounous  ‘synchronous_standby_names’ di buat menjadi comment
#synchronous_standby_names = 'pgslave01'


1.       Ubah properties yang ada di file pg_hba.conf
#vim pg_hba.conf


# Localhost
host    replication     replica          127.0.0.1/24            password
 # PostgreSQL Master IP address
 host    replication     replica          192.168.56.10/24            password

# PostgreSQL SLave IP address
 host    replication     replica          192.168.56.11/24            password



Kemudian save dengan mengetik :wq dan enter
1.       Lakukan restart service postgresql
#systemctl restart postgresql-9.6

2.       Membuat user dan password di postgresql
User : replica

Password : xxx

su - postgres
createuser --replication -P replica
Enter New Password:

1.       Konfigurasi database slave
# systemctl stop postgresql-9.6

2.       Pindah ke direktori /var/lib/pgsql/9.6/ dan backup direktori tersebut.
#cd /var/lib/pgsql/9.6/
#mv data data-backup

3.       Buat direktori dan ubah hak aksesnya.
mkdir -p data/
chmod 700 data/
chown -R postgres:postgres data/

4.       Login di postgres master dan copy semua data dari master server ke slave server sebagai user replica.
su - postgres
pg_basebackup -h 192.168.56.10 -U replica -D /var/lib/pgsql/9.6/data -P --xlog
Password:


1.       Selanjutnya setup postgresql.conf (slave server)
#cd /var/lib/pgsql/9.6/data/
#vim postgresql.conf


#listen_addresses = '192.168.56.11'
listen_addresses = '*'
hot_standby = on


1.       Kemudian, buat file dengan nama 'recovery.conf'
#vim recovery.conf


standby_mode = 'on'
primary_conninfo = 'host=192.168.56.10 port=5432 user=replica password=aqwe123@ application_name=pgslave01'
trigger_file = '/tmp/postgresql.trigger.5432'


*di primary_connifo harus sesuai dengan server dan ip yang dipakai

1.       Ubah permission data pada user postgres.
#chmod 600 recovery.conf
#chown postgres:postgres recovery.conf

2.       Mengaktifkan service postgresql
#systemctl start postgresql-9.6

3.       Lakukan pengecekan apakah port postgresql sudah berjalan sesuai dengan standar .
#netstat -plntu



1.       Testing (posisi di postgresql master)
su – postgres
2.       Cek replikasi sudah sync atau async
psql -c "select application_name, state, sync_priority, sync_state from pg_stat_replication;"
psql -x -c "select * from pg_stat_replication;"
3.       Login ke master
su - postgres
psql

4.       Membuat table
CREATE TABLE replica_test (test 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');

1.       Login ke slave

su - postgres
psql

2.       Cek data ditable replikasi
select * from replica_test;

#Note
Setup agar running psql di user root : $psql
Ubah settingan /var/lib/pgsql/9.3/data/pg_hba.conf

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust

[root@dbmonitoringnew ~]# systemctl restart postgresql-9.3
[root@dbmonitoringnew ~]# psql -U postgres -h 127.0.0.1

No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...