Konfigurasi Postgresql Bdr Di Centos 7 (Multi-Master Replication)
Konfigurasi PostgreSQL BDR Replication di CentOS 7 - Pada tutorial postgres sebelumnya aku sudah menjelaskan bagimana cara melaksanakan konfigurasi postgresql master slave replication. Kali ini aku akan menjelaskan bagimana cara untuk menciptakan multi master replication pada PostgreSQL. Mungkin teman sudah sangat familiar sekali dengan konfigurasi master slave, tapi disini konfigurasi postgresql akan sedikit berbeda dan source yang dipakai juga bukan postgresql biasa melainkan postgres yang sudah di patch oleh komunitas postgres 2nd Quadrant.
Baca Juga :
Install PostgreSQL Source di CentOS 7
Konfigurasi PostgreSQL Replication di CentOS7
Postgres-BDR
Postgres BDR (Bi-Directional Replication) merupakan source postgre multi-master replication system yang didesign 2nd Quadrant untuk menunjukkan high availability geographically distributed clusters. Sederhananya, anda dapat menciptakan sebuah cluster rdbms active secara terpisah meskipun berbeda daerah ataupun negara.
Infomation Host:
Infomation Host:
Host 1
IP : 192.168.56.101 (node1.dimasrio.com)
Host 2
IP : 192.168.56.102 (node2.dimasrio.com)
Konfigurasi PostgreSQL BDR
Setup postgresql dan plugin di node master (node1) dan member (node2).Install dependencies.
yum group install "Development Tools"Download postgresql dan plugin BDR.
yum install git readline-devel zlib-devel
cd /rootCompile postgresql.
git clone -b bdr-pg/REL9_4_STABLE https://github.com/2ndQuadrant/bdr.git postgresql-bdr
git clone -b bdr-plugin/next git://git.postgresql.org/git/2ndquadrant_bdr.git bdr-plugin
cd postgresql-bdrCompile plugin bdr.
mkdir /usr/lib/postgresql-bdr
./configure --prefix=/usr/lib/postgresql-bdr
make all
make install
cd bdr-plugin/Setup user postgres dan systemd.
./autogen.sh
PATH=/usr/lib/postgresql-bdr/bin/:$PATH ./configure
make
make install
adduser postgres
mkdir /var/lib/pgbdr
chown postgres. /var/lib/pgbdr/
su - postgres -c "/usr/lib/postgresql-bdr/bin/initdb -D /var/lib/pgbdr"
nano /usr/lib/systemd/system/postgresql-bdr.serviceTambahkan konfigurasi dibawah ini pada postgresql-bdr.service.
[Unit]Setup environment user postgres dan tambahkan variable PATH pada baris terakhir .bashrc. Save dan lalu exit dari text editor dan user postgres.
Description=Postgresql-9.4 BDR Service
After=syslog.target systemd-user-sessions.service
[Service]
User=postgres
Group=postgres
Type=forking
TimeoutSec=120
ExecStart=/usr/lib/postgresql-bdr/bin/pg_ctl -D /var/lib/pgbdr start
ExecStop=/usr/lib/postgresql-bdr/bin/pg_ctl -D /var/lib/pgbdr stop
ExecReload=/usr/lib/postgresql-bdr/bin/pg_ctl -D /var/lib/pgbdr reload
[Install]
WantedBy=multi-user.target
su - postgres
nano /.bashrc
PATH=$PATH:/usr/lib/postgresql-bdr/bin/
exitSetup postgresql.conf.
nano /var/lib/pgbdr/postgresql.conf
listen_addresses = '*'Set hostname pada /etc/hosts.
max_connections = 500
port = 5432
shared_preload_libraries = 'bdr'
wal_level = logical
track_commit_timestamp = on
max_wal_senders = 10
max_replication_slots = 10
max_worker_processes = 10
log_destination ='stderr'
logging_collector = on
log_directory ='pg_log'
log_filename='postgresql-%Y-%m-%d.log'
log_line_prefix='%m|%r|%d|%u|%e|'
log_statement=all
nano /etc/hostsSaya anggap teman sudah melaksanakan semua setup diatas pada masing-masing node master dan member. Selanjutnya konfigurasi akan berbeda pada node master dan member.
192.168.56.101 node1.truemoney.co.id node1
192.168.56.102 node2.truemoney.co.id node2
Konfigurasi Node1 - Master
Definisikan host pada pg_hba.conf.
nano /var/lib/pgbdr/pg_hba.confTambahkan pada baris terakhir pg_hba.conf.
# DBR Master
host all all 192.168.56.101/32 trust
host all all 192.168.56.102/32 trust
host replication postgres 192.168.56.102/32 trust
Konfigurasi Node2 - Member
Definisikan host pada pg_hba.conf.
nano /var/lib/pgbdr/pg_hba.confTambahkan pada baris terakhir pg_hba.conf.
# DBR MasterSampai disini semua konfigurasi sudah selesai. Sebelum teman menjalankan service postgresql bdr pastikan juga menginstall plugin postgres btree-gist. Biasanya tanpa plugin ini bdr tidak akan berjalan dengan baik.
host all all 192.168.56.101/32 trust
host all all 192.168.56.102/32 trust
host replication postgres 192.168.56.101/32 trust
Install postgres btree-gist di masing-masing node.
cd /root/postgresql-bdr/contrib/btree_gist/Selanjutnya start service postgres-bdr di masing-masing node.
make
make install
systemctl start postgresql-bdr
Setup Database BDR
Node 1 - Masterpostgres=# create database dimzrio;
postgres=# \c dimzrio;
dimzrio=# create extension btree_gist;
dimzrio=# create extension bdr;
dimzrio=# select bdr.bdr_group_create (local_node_name:='node1',
node_external_dsn:='host=192.168.56.101 port=5432 dbname=dimzrio');
Node 2 - Member
postgres=# create database dimzrio;Selanjutnya cek apakah bdr sudah berjalan dengan baik.
postgres=# \c dimzrio;
dimzrio=# create extension btree_gist;
dimzrio=# create extension bdr;
dimzrio=# select bdr.bdr_group_join(local_node_name :='node2', node_external_dsn:='host=192.168.56.102 port=5432 dbname=dimzrio', join_using_dsn:='host=192.168.56.101 port=5432 dbname=dimzrio');
Output :
Create table dan insert.