2. Lingkungan
● CentOS release 6.3 (Final)
● postgres (PostgreSQL) 8.4.13
● SkyTools version 3.1.3
3. Setup Layer : Provider & Ticker
IP : 10.1.4.203
DB : db_portal_sempur
User : skytools
Layer : Subscriber
IP : 10.1.4.148
DB : masterdata
User : skytools
4. Panduan
Buat user 'skytools', baik
di Producer maupun Consumer
Kompilasi dan Install skytools,
Baik di Producer maupun Consumer
Install
Producer Consumer
● Ticker ● Londiste3
● Londiste3 ● pgQ
● pgQ
5. Modul SkyTools
● PgQ, sistem queuing yang ditulis menggunakan PL/pgsql,
Python dan C
Terdiri 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.
8. 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.
9. Instalasi
Di 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
make
make install
●
13. 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.
14. 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;
15. 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 menghapus
Klausa constraint FK yang merujuk ke
Tabel yang tidak ada dan menghapus trigger-
Trigger yang ikut ter-dump
16. Tips : .pgpass
● Agar tidak perlu memasukkan password secara
interaktif, maka kita bisa menyimpan password
pada file ~/.pgpass , formatnya :
hostname:port:database:username:password
17. .pgpass di Subcriber
● Tambahkan entri berikut di ~/.pgpass
localhost:5432:masterdata:skytools:the_password
10.1.4.203:5432:db_portal_sempur:skytools:the_password
Baris kedua adalah Provider
● Ubah permission .pgpass
chmod 0600 ~/.pgpass
18. Test Koneksi
Database di Subscriber
● Pastikan skytools di subscriber dapat mengakses
database masterdata di localhost
skytools@localhost $ psql -d masterdata
masterdata=> select * from employee_all ;
● Pastikan skytools di subscriber dapat mengakses
database db_portal_sempur di Provider
$ psql -d db_portal_sempur -h 10.1.4.203
db_portal_sempur=> select * from employee_all ;
19. .pgpass di Provider
● Tambahkan entri berikut di ~/.pgpass
localhost:5432:db_portal_sempur:skytools:the_password
10.1.4.158:5432:masterdata:skytools:the_password
Baris kedua adalah Subscriber
● Ubah permission .pgpass
chmod 0600 ~/.pgpass
20. Test Koneksi
Database di Provider
● Pastikan skytools di Provider dapat mengakses
database db_portal_sempur di localhost
skytools@localhost $ psql -d db_portal_sempur
masterdata=> select * from employee_all ;
● Pastikan skytools di Provider dapat mengakses
database masterdata di Subscriber
$ psql -d masterdata -h 10.1.4.158
db_portal_sempur=> select * from employee_all ;
21. SkyTools Services
Di Provider maupun Di Subscriber
/home/skytools/conf/skytools.ini
# configure your skytools services here
# man scriptmgr3 for details.
[scriptmgr]
job_name = skytools3
logfile = /home/skytools/log/%(job_name)s.log
pidfile = /home/skytools/log/%(job_name)s.pid
config_list = /home/skytools/conf/*.ini
[DEFAULT]
cwd = /
[londiste3]
script = /opt/skytools3/bin/londiste3
args = worker
[pgqd]
script = /opt/skytools3/bin/pgqd
22. Membuat Konfigurasi Londiste
untuk Provider
Konfigurasi ini
Digunakan di Provider
/home/skytools/conf/db_portal.ini
[londiste3]
job_name = db_portal_sempur_replicate
db = dbname=db_portal_sempur user=skytools port=5432
queue_name = masterdata_replicate
logfile = /var/lib/pgsql/data/pg_log/skytools/%(job_name)s.log
pidfile = /var/lib/pgsql/data/pg_log/skytools/%(job_name)s.pid
Buat root node londiste :
londiste3 conf/db_portal.ini create-root node1 dbname=db_portal_sempur
23. Membuat Konfigurasi Londiste
untuk Provider
Konfigurasi ini
Digunakan di Provider
/home/skytools/conf/db_portal.ini
[londiste3]
job_name = db_portal_sempur_replicate
db = dbname=db_portal_sempur user=skytools port=5432
queue_name = masterdata_replicate
logfile = /var/lib/pgsql/data/pg_log/skytools/%(job_name)s.log
pidfile = /var/lib/pgsql/data/pg_log/skytools/%(job_name)s.pid
Buat root node londiste :
londiste3 conf/db_portal.ini create-root node1 dbname=db_portal_sempur
25. Membuat Konfigurasi untuk
Subscriber
Konfigurasi ini
Digunakan di Subscriber
/home/skytools/conf/db_masterdata.ini
[londiste3]
job_name = db_masterdata
db = dbname=masterdata user=skytools port=5432
queue_name = masterdata_replicate
logfile = /home/skytools/log/%(job_name)s.log
pidfile = /home/skytools/log/%(job_name)s.pid
26. 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"
28. Membuat Konfigurasi untuk
PgQ Ticker Daemon
Di jalankan pada mesin tempat
Database Provider berada
/home/skytools/conf/pgqd.ini
[pgqd]
base_connstr = “host=localhost port=5432 user=skytools”
initial_database = template1
database_list = db_portal_sempur, masterdata
logfile = /home/skytools/log/pgqd.log
pidfile = /home/skytools/log/pgqd.pid
Untuk melihat opsi konfigurasi yang lain, Sahabat bisa menjalankan perintah :
$pgqd --ini
34. 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