Londiste

Allikas: Kuutõrvaja
Redaktsioon seisuga 13. aprill 2010, kell 22:45 kasutajalt Imre (arutelu | kaastöö) (Londiste paigaldamine)

Sissejuhatus

Londiste http://wiki.postgresql.org/wiki/Londiste_Tutorial on asünkroonne master/slave-tüüpi andmete replitseerimislahendus. Londiste tarkvara sisaldub Skytools komplektis ühe rakendusena.

Tööpõhimõte

TODO

Londiste paigaldamine

Londiste paigaldamiseks Debian Squeeze keskkonnas sobib öelda

# apt-get install skytools

Paigaldamise tulemusena lisanduvad muu hulgas failid

/usr/bin/walmgr
/usr/bin/table_dispatcher
/usr/bin/skytools_upgrade
/usr/bin/scriptmgr
/usr/bin/queue_splitter
/usr/bin/queue_mover
/usr/bin/pgqadm
/usr/bin/londiste
/usr/bin/cube_dispatcher
/usr/bin/bulk_loader

Londiste seadistamine

TODO

Londiste kasutamine

TODO

  • ticker.ini
  • p-to-s.ini

Süsteemi peab olema paigaldatud pakett python-psycopg2

 # apt-get install python-psycopg2

Londiste töötamise võiks kujutada sellise skeemiga

                    MASTER                                   SLAVE
  
                  -----|---------------------------------------|-----
                      _|_                                     _|_
                     |   |                                   |   |
                     |___|                                   |___|
 
 seadistusfail:    ticker.ini                              p-to-s.ini
      protsess:    python pgqadm.py ticker.ini ticker -d   python londiste.py p-to-s.ini replay -d
       skeemid:    pgq, londiste                           londiste

ticker.ini

Londiste kasutamiseks tuleb tekitada seadistusfail ticker.ini

 $ cat /home/postgres/londiste/ticker.ini
 [pgqadm]
 job_name = myticker_name
 db = dbname=baasinimi host=10.0.13.170 user=postgres password=parool port=5432
 # how often to run maintenance [seconds]
 maint_delay = 600
 
 # how often to check for activity [seconds]
 loop_delay = 0.1
 logfile = ~/londiste/log/%(job_name)s.log
 pidfile = ~/londiste/pid/%(job_name)s.pid

kusjuures ühendussõnet saab testida selliselt

 $ python
 ...
 >>> import psycopg2
 >>> con = psycopg2.connect('dbname=baasinimi host=10.0.13.170 \
   user=postgres password=parool port=5432')
 >>> Ctrl-D

PGQ baasi osa paigaldamiseks tuleb seejärel öelda

 $ mkdir /home/postgres/londiste/log
 $ mkdir /home/postgres/londiste/pid
 $ export PYTHONPATH=/usr/local/skytools/lib/python2.4/site-packages 
 $ /usr/local/skytools/bin/pgqadm.py /home/postgres/londiste/ticker.ini install
 2009-11-03 13:28:41,793 28491 INFO plpgsql is installed
 2009-11-03 13:28:41,795 28491 INFO txid_current_snapshot is installed
 2009-11-03 13:28:41,796 28491 INFO Installing pgq
 2009-11-03 13:28:41,796 28491 INFO Reading from \
   /usr/local/skytools/share/skytools/pgq.sql

Tulemusena tekib andmebaasi baasinimi skeem pgq.

Tickeri käivitamiseks tuleb öelda

 $ /usr/local/skytools/bin/pgqadm.py /home/postgres/londiste/ticker.ini ticker -d

ja jääb käima vastav protsess.

p-to-s.ini seadistamine

 $ cat p-to-s.ini 
 [londiste]
 job_name = test_to_subcriber
 
 provider_db = dbname=portaal host=10.0.13.170 user=postgres \
   password=parool port=5433
 subscriber_db = dbname=portaal host=10.0.13.177 user=postgres \
   password=parool port=5432
 
 # it will be used as sql ident so no dots/spaces
 pgq_queue_name = londiste.replica
 
 logfile = /home/postgres/londiste/log/%(job_name)s.log
 pidfile = /home/postgres/londiste/pid/%(job_name)s.pid

Logiserverist öelda

 $ londiste.py p-to-s.ini provider install
 $ londiste.py p-to-s.ini subscriber install

ning käivitada deemon

 $ londiste.py p-to-s.ini replay -d

Andmete replitseerimiseks tuleb logiserverisse moodustada vastavad tableid ning seejärel öelda logiserverist

 $ londiste.py p-to-s.ini provider add public.T1 public.T2
 $ londiste.py p-to-s.ini subscriber add public.T1 public.T2

Subscriberi eemaldamiseks sobib öelda

 $ londiste.py p-to-s.ini subscriber remove skeeminimi.tabelinimi

Staatust saab küsida

 $ londiste.py p-to-s.ini subscriber tables
 Table                         State
 skeeminimi.tabelinimi         in-copy