postgresql bootcamp : manajemen master data dengan skytools
TRANSCRIPT
![Page 2: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/2.jpg)
Lingkungan
● CentOS release 6.3 (Final)● postgres (PostgreSQL) 8.4.13● SkyTools version 3.1.3
![Page 3: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/3.jpg)
SetupLayer : Provider & TickerIP : 10.1.4.203DB : db_portal_sempurUser : skytools
Layer : SubscriberIP : 10.1.4.148DB : masterdataUser : skytools
![Page 4: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/4.jpg)
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
![Page 5: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/5.jpg)
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.
![Page 6: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/6.jpg)
Producers
![Page 7: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/7.jpg)
Consumers / Subscribers
![Page 8: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/8.jpg)
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.
![Page 9: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/9.jpg)
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
●
![Page 10: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/10.jpg)
InstalasiUbah Ownership /opt/skytools3
sudo chown skytools.skytools -R /opt/skytools3
![Page 11: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/11.jpg)
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
![Page 12: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/12.jpg)
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
![Page 13: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/13.jpg)
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.
![Page 14: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/14.jpg)
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;
![Page 15: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/15.jpg)
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
![Page 16: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/16.jpg)
Tips : .pgpass
● Agar tidak perlu memasukkan password secara interaktif, maka kita bisa menyimpan password pada file ~/.pgpass , formatnya :
hostname:port:database:username:password
![Page 17: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/17.jpg)
.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
![Page 18: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/18.jpg)
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 ;
![Page 19: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/19.jpg)
.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
![Page 20: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/20.jpg)
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 ;
![Page 21: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/21.jpg)
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
![Page 22: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/22.jpg)
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
![Page 23: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/23.jpg)
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
![Page 24: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/24.jpg)
Menjalankan worker daemon pada root node
londiste3 -d conf/db_portal.ini worker
![Page 25: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/25.jpg)
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
![Page 26: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/26.jpg)
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"
![Page 27: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/27.jpg)
Menjalankan Worker Daemon di Database Target
londiste3 -d conf/db_masterdata.ini worker
![Page 28: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/28.jpg)
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
![Page 29: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/29.jpg)
Menjalankan Ticker Daemon
pgqd -d conf/pgqd.ini
![Page 30: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/30.jpg)
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
![Page 31: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/31.jpg)
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
![Page 32: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/32.jpg)
SkyTools init scriptskytools3.init.d
Sahabat bisa melihat contoh init script sederhana pada tautan di alamat berikut :
http://bit.ly/12BAEvy
![Page 33: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/33.jpg)
Jalankan
/etc/init.d/skytools3 start
![Page 34: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/34.jpg)
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
![Page 35: PostgreSQL BootCamp : Manajemen Master Data dengan SkyTools](https://reader035.vdocuments.site/reader035/viewer/2022081801/5558be0dd8b42a7e298b51f8/html5/thumbnails/35.jpg)
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