Kamis, 28 Mei 2020

DRC-postgres windows

Replikasi Database pada PostgreSQL

Replikasi adalah seperangkat teknologi untuk menyalin dan mendistribusikan data dan objek database dari satu database ke database yang lain dan kemudian melakukan sinkronisasi antar database untuk menjaga konsistensi. Dengan menggunakan replikasi, kita dapat mendistribusikan data ke berbagai lokasi.

Penjelasan sederhananya ada database master(tuan) dan database slave(budak). Pertama database master dan slave disinkronkan, setelah itu setiap terjadi perubahan pada master maka data akan direplikasi pada slave. Sehingga master dan slave akan selalu sama.

Replikasi biasanya digunakan dalam skenario server to server yang memerlukan output tinggi seperti, meningkatkan skalabilitas dan ketersediaan, pergudangan data dan pelaporan, mengintegrasikan data heterogen, dan offloading batch processing.
PostgreSQL memiliki beberapa alternatif untuk mengimplementasikan replikasi data, diantaranya adalah PGCluster, PGPool, Sequoia, Slony-I. Namun, di sini saya hanya akan membahas secara mendalam untuk teknologi replikasi dengan Slony-I.
Slony merupakan aplikasi yang murni berfungsi sebagai replication server. Slony tidak mendukung load balancing (Berbeda dengan PGcluster) dan bukanlah statement based replication tetapi hanya transaksional statement sehingga DDL tidak akan direplikasikan.
Slony adalah table based replication dan setiap table yang akan direplikasikan harus didefinisikan terlebih dahulu. Statement yang akan direplikasikan terlebih dahulu akan disimpan dalam dalam suatu skema yang didefinisikan dalam ‘Cluster’. Adanya skema ini akan mampu menggaransi bahwa data yang akan direplikasi akan sampai ke subscriber. Artinya dalam situasi terjadi gangguan terhadap komunikasi, statement masih tersimpan didalam ‘Cluster’. Ketika komunikasi telah pulih, proses replikasi akan kembali diteruskan untuk setiap statement yang belum tereplikasi. Secara garis besarnya proses replikasi dengan menggunakan Slony bisa dikatakan masih lebih bisa lebih diandalkan.
Persiapan
Sebelum kita lanjutkan untuk setup replikasi terlebih dahulu kita harus mengenal beberapa hal mengenai slony.
Cluster kumpulan node yang berpartisipasi pada proses replikasi dengan menggunakan slony.
Node adalah entity yang unik yang terdiri dari kombinasi IP address, Port, dan database.
Path adalah informasi koneksi antara cluster dan node.
Replication Set adalah sekumpulan table, dan secara opsional sequence object dimana data akan direplikasikan.
Master adalah asal dari data yang akan direplikasikan.
Slave atau juga sering disebut sebagai subscriber.
Provider adalah node yang menyediakan data yang akan direplikasikan
Cascaded Subscription adalah konfigurasi dengan minimal ada satu node yang berfungsi sebagai Provider sekaligus Subscriber.
Slon. Slony daemon yang akan mengontrol proses replikasi. Untuk linux setiap node memiliki slon – nya masing-masing, sedangkan untuk Windows hanya ada 1 slon service dalam satu host.
Slonik, program utility yang digunakan untuk memproses perintah untuk membuat dan mengupdate konfigurasi.
Langkah – Langkah
1. Membuat database master_db dan slave_db (masing masing database sudah saya buat table dengan nama employee), dalam hal ini saya membuatnya di komputer yang sama.
2. Siapkan posisi cmd pada folder POSTGRESQL_HOME/bin
Replikasi biasanya digunakan dalam skenario server to server yang memerlukan output tinggi seperti, meningkatkan skalabilitas dan ketersediaan, pergudangan data dan pelaporan, mengintegrasikan data heterogen, dan offloading batch processing.
PostgreSQL memiliki beberapa alternatif untuk mengimplementasikan replikasi data, diantaranya adalah PGCluster, PGPool, Sequoia, Slony-I. Namun, di sini saya hanya akan membahas secara mendalam untuk teknologi replikasi dengan Slony-I.
Slony merupakan aplikasi yang murni berfungsi sebagai replication server. Slony tidak mendukung load balancing (Berbeda dengan PGcluster) dan bukanlah statement based replication tetapi hanya transaksional statement sehingga DDL tidak akan direplikasikan.
Slony adalah table based replication dan setiap table yang akan direplikasikan harus didefinisikan terlebih dahulu. Statement yang akan direplikasikan terlebih dahulu akan disimpan dalam dalam suatu skema yang didefinisikan dalam ‘Cluster’. Adanya skema ini akan mampu menggaransi bahwa data yang akan direplikasi akan sampai ke subscriber. Artinya dalam situasi terjadi gangguan terhadap komunikasi, statement masih tersimpan didalam ‘Cluster’. Ketika komunikasi telah pulih, proses replikasi akan kembali diteruskan untuk setiap statement yang belum tereplikasi. Secara garis besarnya proses replikasi dengan menggunakan Slony bisa dikatakan masih lebih bisa lebih diandalkan.
Persiapan
Sebelum kita lanjutkan untuk setup replikasi terlebih dahulu kita harus mengenal beberapa hal mengenai slony.
Cluster kumpulan node yang berpartisipasi pada proses replikasi dengan menggunakan slony.
Node adalah entity yang unik yang terdiri dari kombinasi IP address, Port, dan database.
Path adalah informasi koneksi antara cluster dan node.
Replication Set adalah sekumpulan table, dan secara opsional sequence object dimana data akan direplikasikan.
Master adalah asal dari data yang akan direplikasikan.
Slave atau juga sering disebut sebagai subscriber.
Provider adalah node yang menyediakan data yang akan direplikasikan
Cascaded Subscription adalah konfigurasi dengan minimal ada satu node yang berfungsi sebagai Provider sekaligus Subscriber.
Slon. Slony daemon yang akan mengontrol proses replikasi. Untuk linux setiap node memiliki slon – nya masing-masing, sedangkan untuk Windows hanya ada 1 slon service dalam satu host.
Slonik, program utility yang digunakan untuk memproses perintah untuk membuat dan mengupdate konfigurasi.
Langkah – Langkah
1. Membuat database master_db dan slave_db (masing masing database sudah saya buat table dengan nama employee), dalam hal ini saya membuatnya di komputer yang sama.
2. Siapkan posisi cmd pada folder POSTGRESQL_HOME/bin
POSTGRESQL_HOME/bin
3. Init Cluster Script. Membuat file y.txt yang merupakan init cluster script & create cluster script
cluster name = ycluster;
node 1 admin conninfo=’host=localhost dbname=master_db user=postgres port=5432 password=yoeda’;
node 2 admin conninfo=’host=localhost dbname=slave_db user=postgres port=5432 password=yoeda’;
init cluster (id = 1, comment = ‘Primary Node For the Slave postgres’);
store node (id = 2, event node = 1 , comment = ‘Slave Node For The Primary postgres’);
echo ‘Stored all nodes in the slony catalogs’;
store path(server = 1 , client = 2, conninfo = ‘host=localhost dbname=master_db user=postgres port=5432 password=yoeda’);
store path(server = 2, client = 1 , conninfo = ‘host=localhost dbname=slave_db user=postgres port=5432 password=yoeda’);
echo ‘Stored all Store Paths for Failover and Switchover into slony catalogs ..’;
try { create set (id = 1 ,origin = 1 , comment = ‘Set for public’); } on error { echo ‘Could not create Subscription set1 for upgrade!’; exit 1;}
set add table (set id = 1 ,origin = 1 , id = 1, full qualified name = ‘public.employee’, comment = ‘Table employee with primary key’);

Init Cluster Script & Create Set Script
4. memproses Init Cluster Script dengan program slonik
Slonik init cluster script
5. Pada Point 4 kita telah selesai mempersiapkan database untuk di replikasi. Langkah selanjutnya adalah memulai replikasi dengan menghidupkan slon pada kedua database tersebut. Caranya adalah sebagai berikut:
5a. Slon proses pada database master (master_db)
slon -s 1000 -d2 ycluster “host=localhost dbname=master_db user=postgres port=5432” > D:\log_master_db.log
Slon Process Database Master
5b. Slon Process pada database slave (slave_db)
slon -s 1000 -d2 ycluster “host=localhost dbname=slave_db user=postgres port=5432” > D:\log_slave_db.log
Slon Process Database Slave
Untuk slon process master maupun slave jangan di close karena merupakan daemon yang mengontrol proses replikasi.
6. Pada point 5 kita telah menghidupkan program slon pada database master dan slave, namun langkah tersebut masih belum selesai karena kita harus melakukan sinkronisasi terhadap 2 program slon tersebut. Caranya adalah sebagai berikut:
6a. Membuat file y2.txt dengan script sebagai berikut:
cluster name = ycluster;
node 1 admin conninfo=’host=localhost dbname=master_db user=postgres port=5432 password=yoeda’;
node 2 admin conninfo=’host=localhost dbname=slave_db user=postgres port=5432 password=yoeda’;
try { subscribe set (id = 1, provider = 1 , receiver = 2, forward = yes, omit copy = false); } on error { exit 1; } echo ‘Subscribed nodes to set 1’;
Subsribing the sets
b. Menjalankan file y2.txt dengan menggunakan slonik. Dilakukan pada server master
Slonik Subscribing The Sets
Proses Replikasi database PostgreSQL menggunakan Slony-I selesai. Berikut adalah hasilnya:
Data Awal master_db
Insert data baru master_db
slave_db

Tidak ada komentar:

Posting Komentar