Erinevus lehekülje "Londiste" redaktsioonide vahel

Allikas: Kuutõrvaja
(p-to-s.ini seadistamine)
(Slave)
202. rida: 202. rida:
 
====Slave====
 
====Slave====
  
TODO
+
  $ londiste /etc/londiste/londiste.ini subscriber tables
 
+
  Table                        State
 +
  skeeminimi.tabelinimi        in-copy
  
 
===Testimine===
 
===Testimine===

Redaktsioon: 13. aprill 2010, kell 23:22

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

Londiste kasutab PGQ http://wiki.postgresql.org/wiki/PGQ_Tutorial lahendust andmete asünkroonseks replikeerimiseks. Londiste on

  • nn 'master to many slaves' lahendus
  • sünkroniseeritakse tabeleid (sh loendureid)

Londiste töötamise võiks kujutada sellise skeemiga

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

kus

  • MASTER - andmebaas, mille tabelites kasutajad muudavad andmeid
  • SLAVE - andmebaas, mille tabelite sisu hoitakse masteriga sünkroonis
  • pgq, londiste - replikeerimisega seotud skeemid; selliste nimedega skeeme ei tohiks andmebaasis muuks kasutuseks olla

Londiste tarkvara paigaldamine failisüsteemi

Londiste paigaldamiseks Debian Squeeze keskkonnas sobib öelda master ja slave arvutites

# 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 tarkvara paigaldamine andmebaasi

Londiste tööks tuleb master andmebaasi tekitada skeemid londiste ja pgq ning slave andmebaasi skeem londiste koos seal sisalduvate replikeerimiseks vajalike funktsioonide ja tabelitega.

Üks võimalus on need skeemid moodustada Slave andmebaasi arvutis töötades. Esmalt tuleb tekitada sobiva sisuga sarnane seadistusfail

$ cat /etc/londiste/londiste.ini 
[londiste]
job_name = test_to_subcriber

# source queue location
provider_db = dbname=londiste port=5432 host=192.168.10.205 user=postgres password=trust

# target database - it's preferable to run "londiste replay"
# on same machine and use unix-socket or localhost to connect
subscriber_db = dbname=londiste port=5432 host=127.0.0.1

# source queue name
pgq_queue_name = londiste.replica

logfile = ~/log/%(job_name)s.log
pidfile = ~/pid/%(job_name)s.pid

# how often to poll event from provider
#loop_delay = 1

# max locking time on provider (in seconds, float)
#lock_timeout = 10.0

kus on näidatud

  • provider_db - master andmebaasi ligipääs
  • subscriber_db - slave andmebaasi ligipääs

Tablite ning funktsioonide tekitamiseks masterisse tuleb öelda nt

$ londiste.py /etc/londiste/londiste.ini provider install

Tabelite ning funktsioonide tekitamiseks Slave'i tuleb öelda nt

$ londiste.py /etc/londiste/londiste.ini subscriber install

PgQ seadistamine ja käivitamine masteris

Masteri PgQ seadistamiseks sobib kasutada nt sellist seadistusfaili

$ cat /etc/londiste/ticker.ini 
[pgqadm]

# should be globally unique
job_name = pgqadm_londiste

db = dbname=londiste port=5432 host=127.0.0.1 user=postgres password=trust

# how often to run maintenance [minutes]
maint_delay_min = 5

# how often to check for activity [secs]
loop_delay = 0.1

logfile = ~/log/%(job_name)s.log
pidfile = ~/pid/%(job_name)s.pid

use_skylog = 0

kus

  • db - masteri andmebaas

PgQ käivitamiseks sobib öelda masteris

$ pgqadm /etc/londiste/ticker.ini ticker

Londiste kliendi käivitamine slave'is

$ londiste /etc/londiste/londiste.ini

Londiste kasutamine

TODO

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

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


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.

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 haldamine

Master

$ pgqadm /etc/londiste/ticker.ini status
Postgres version: 8.4.3   PgQ version: 2.1.8

Event queue                                    Rotation        Ticker   TLag
------------------------------------------------------------------------------
londiste.replica                                 3/360s    240/3s/60s     9s
------------------------------------------------------------------------------

Consumer                                                       Lag  LastSeen
------------------------------------------------------------------------------
londiste.replica:
  test_to_subcriber                                             9s        8s
------------------------------------------------------------------------------

Slave

 $ londiste /etc/londiste/londiste.ini subscriber tables
 Table                         State
 skeeminimi.tabelinimi         in-copy

Testimine

TODO

Märkused

  • Andmebaasiühenduse testimiseks Pyhtonist sobib öelda
$ python
...
>>> import psycopg2
>>> con = psycopg2.connect('dbname=baasinimi host=10.0.13.170 \
  user=postgres password=parool port=5432')
>>> Ctrl-D

Kasulikud lisamaterjalid

TODO