PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools

Post on 17-May-2015

953 views 3 download

Transcript of PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools

Menggunakan SkytoolsUntuk Manajemen Data Master

Wildan Maulanawildan.m@openthinklabs.com

Lingkungan

● CentOS release 6.3 (Final)● postgres (PostgreSQL) 8.4.13● SkyTools version 3.1.3

SetupLayer : Provider & TickerIP : 10.1.4.203DB : db_portal_sempurUser : skytools

Layer : SubscriberIP : 10.1.4.148DB : masterdataUser : skytools

Panduan

Buat user 'skytools', baik di Producer maupun Consumer

Kompilasi dan Install skytools, Baik di Producer maupun Consumer

Producer● Ticker● Londiste3● pgQ

Consumer● Londiste3● pgQ

Install

Modul SkyTools

● PgQ, sistem queuing yang ditulis menggunakan PL/pgsql, Python dan CTerdiri dari tiga layer :● Producers● Consumers / Subscribers● Ticker

● Londiste, tool replikasi yang ditulis menggunakan Python, menggunakan PgQ sebagai event transport

● Walmgr, script yang akan mensetup WAL archiving, melakukan backup awal, dan menjalankan WAL archive dan restore.

Producers

Consumers / Subscribers

Ticker

● Ticker dibutuhkan oleh Londiste● Ticker harus diarahkan ke database yang menjadi “Provider”.● Ticker dapat dijalankan pada mesin yang berbeda (tidak harus

pada mesin yang sama dimana database “Provider” berada), meskipun pada umumnya biasanya Ticker dijalankan pada mesin yang sama dimana database “Provider” berada.

● Ticker dapat meng-host berapapun queue yang Sahabat inginkan. Setiap queue memiliki nama yang unik dan dapat digunakan oleh banyak subscriber.

InstalasiDi Producer maupun Consumer

● Unduh SkyTools 3 di alamat berikut : http://bit.ly/WHUAJw

● Jalankan perintah berikut :

./configure --prefix=/opt/skytools3 --with-pgconfig=/usr/bin/pg_config

makemake install

InstalasiUbah Ownership /opt/skytools3

sudo chown skytools.skytools -R /opt/skytools3

InstalasiDi Producer maupun Consumer

● Edit .bashrc, tambahkan baris berikut :

● Jalankan perintah :

source ~/.bashrc

PATH=$PATH:/opt/skytools3/bin/export PATHPYTHONPATH=$PYHTONPATH:/opt/skytools3/lib64/python2.6/site-packages:/opt/skytools3/lib/python2.6/site-packagesexport PYTHONPATH

InstalasiPastikan Dapat Berjalan

$ londiste3 --version$ pgqd --version $ qadmin --version $ queue_mover3 --version$ queue_splitter3 --version$ scriptmgr3 --version$ simple_consumer3 --version$ simple_local_consumer3 --version$ skytools_upgrade3 --version $ walmgr3 --version

Mensetup Replikasi Londiste3

● Tabel-tabel yang akan direplikasi : ● employee_all● organizationunit● organizationunit_parent● organizationunit_type

● Pada Schema di database replikasi constraint FK tidak diikut sertakan, hanya struktur tabel dan constraint PK saja yang diikut sertakan.

Mempersiapkan Database Target Replikasi (Subscriber)

● Buat database baru, misalkan namanya, masterdata, owner bisa disamakan dengan database sumber (provider)

CREATE DATABASE masterdata WITH OWNER = mdm ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' CONNECTION LIMIT = -1;

Mempersiapkan Database Target Replikasi (Subscriber)

● Dump skema tabel-tabel yang ingin direplikasi dari database sumber (Provider).

pg_dump --schema-only -t object_category -t organizationunit -t organizationunit_parent -t organizationunit_type -t employee_all --no-owner db_portal_sempur --no-acl > masterdata_schema.sql

Karena kita tidak men-dump seluruh tabel Dalam database, maka sebelum melakukan Import ke database subscriber, Pastikan Sahabat telah menghapusKlausa constraint FK yang merujuk ke Tabel yang tidak ada dan menghapus trigger-Trigger yang ikut ter-dump

Tips : .pgpass

● Agar tidak perlu memasukkan password secara interaktif, maka kita bisa menyimpan password pada file ~/.pgpass , formatnya :

hostname:port:database:username:password

.pgpass di Subcriber

● Tambahkan entri berikut di ~/.pgpass

● Ubah permission .pgpass

localhost:5432:masterdata:skytools:the_password10.1.4.203:5432:db_portal_sempur:skytools:the_password

chmod 0600 ~/.pgpass

Baris kedua adalah Provider

Test Koneksi Database di Subscriber

● Pastikan skytools di subscriber dapat mengakses database masterdata di localhost

● Pastikan skytools di subscriber dapat mengakses database db_portal_sempur di Provider

skytools@localhost $ psql -d masterdatamasterdata=> select * from employee_all ;

$ psql -d db_portal_sempur -h 10.1.4.203db_portal_sempur=> select * from employee_all ;

.pgpass di Provider

● Tambahkan entri berikut di ~/.pgpass

● Ubah permission .pgpass

localhost:5432:db_portal_sempur:skytools:the_password10.1.4.158:5432:masterdata:skytools:the_password

chmod 0600 ~/.pgpass

Baris kedua adalah Subscriber

Test Koneksi Database di Provider

● Pastikan skytools di Provider dapat mengakses database db_portal_sempur di localhost

● Pastikan skytools di Provider dapat mengakses database masterdata di Subscriber

skytools@localhost $ psql -d db_portal_sempurmasterdata=> select * from employee_all ;

$ psql -d masterdata -h 10.1.4.158db_portal_sempur=> select * from employee_all ;

SkyTools ServicesDi Provider maupun Di Subscriber

# configure your skytools services here# man scriptmgr3 for details.

[scriptmgr]job_name = skytools3logfile = /home/skytools/log/%(job_name)s.logpidfile = /home/skytools/log/%(job_name)s.pid

config_list = /home/skytools/conf/*.ini

[DEFAULT]cwd = /

[londiste3]script = /opt/skytools3/bin/londiste3args = worker

[pgqd]script = /opt/skytools3/bin/pgqd

/home/skytools/conf/skytools.ini

Membuat Konfigurasi Londiste untuk Provider

[londiste3]job_name = db_portal_sempur_replicatedb = dbname=db_portal_sempur user=skytools port=5432queue_name = masterdata_replicatelogfile = /var/lib/pgsql/data/pg_log/skytools/%(job_name)s.logpidfile = /var/lib/pgsql/data/pg_log/skytools/%(job_name)s.pid

/home/skytools/conf/db_portal.ini

Konfigurasi ini Digunakan di Provider

Buat root node londiste :

londiste3 conf/db_portal.ini create-root node1 dbname=db_portal_sempur

Membuat Konfigurasi Londiste untuk Provider

[londiste3]job_name = db_portal_sempur_replicatedb = dbname=db_portal_sempur user=skytools port=5432queue_name = masterdata_replicatelogfile = /var/lib/pgsql/data/pg_log/skytools/%(job_name)s.logpidfile = /var/lib/pgsql/data/pg_log/skytools/%(job_name)s.pid

/home/skytools/conf/db_portal.ini

Konfigurasi ini Digunakan di Provider

Buat root node londiste :

londiste3 conf/db_portal.ini create-root node1 dbname=db_portal_sempur

Menjalankan worker daemon pada root node

londiste3 -d conf/db_portal.ini worker

Membuat Konfigurasi untuk Subscriber

[londiste3]job_name = db_masterdatadb = dbname=masterdata user=skytools port=5432queue_name = masterdata_replicatelogfile = /home/skytools/log/%(job_name)s.logpidfile = /home/skytools/log/%(job_name)s.pid

/home/skytools/conf/db_masterdata.ini

Konfigurasi ini Digunakan di Subscriber

Membuat Node di Database Target

londiste3 conf/db_masterdata.ini create-leaf node2 dbname=masterdata --provider="dbname=db_portal_sempur host=10.1.4.203 port=5432"

Menjalankan Worker Daemon di Database Target

londiste3 -d conf/db_masterdata.ini worker

Membuat Konfigurasi untuk PgQ Ticker Daemon

[pgqd]base_connstr = “host=localhost port=5432 user=skytools”initial_database = template1database_list = db_portal_sempur, masterdatalogfile = /home/skytools/log/pgqd.logpidfile = /home/skytools/log/pgqd.pid

/home/skytools/conf/pgqd.ini

Untuk melihat opsi konfigurasi yang lain, Sahabat bisa menjalankan perintah :

$pgqd --ini

Di jalankan pada mesin tempat Database Provider berada

Menjalankan Ticker Daemon

pgqd -d conf/pgqd.ini

Menambahkan tabel di root node

● Jalankan perintah berikut :

londiste3 conf/db_portal.ini add-table employee_all --handler=dispatch --handler-arg=skip_fields=passwordlondiste3 conf/db_portal.ini add-table organizationunit londiste3 conf/db_portal.ini add-table organizationunit_parent londiste3 conf/db_portal.ini add-table organizationunit_type

Menambahkan tabel di leaf node

● Jalankan perintah berikut :

londiste3 conf/db_masterdata.ini add-table employee_all --handler=dispatch --handler-arg=skip_fields=passwordlondiste3 conf/db_masterdata.ini add-table organizationunit londiste3 conf/db_masterdata.ini add-table organizationunit_parent londiste3 conf/db_masterdata.ini add-table organizationunit_type

SkyTools init scriptskytools3.init.d

Sahabat bisa melihat contoh init script sederhana pada tautan di alamat berikut :

http://bit.ly/12BAEvy

Jalankan

/etc/init.d/skytools3 start

Menjalankan SkyTools Ketika Boot

Tambahkan baris script berikut untuk menginisialisais SkyTools ketika boot di /etc/rc.local

export PGPASSFILE=/var/lib/pgsql/.pgpass/var/lib/pgsql/init/skytools3.init.d start

Referensi

● Blue Skies: Practical Skytools, http://bit.ly/VRNt2E (Skytools 2)

● Skytools 3 Documentation, http://bit.ly/12e4fuJ● PgPass, http://bit.ly/wpimnV● Londiste Tutorial, http://bit.ly/17E9BC