Londiste
Sisukord
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
Antud juhul tähendab asünkroonsus seda, et master andmebaasi kasutaja ei saa olla kindel, et tema toiminguga seotud muudatus on lisaks master andmebaasile jõudnud kohale kõigisse slave andmebaasidesse.
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
Debian Lenny puhul tuleb tarkvara paigaldada lähtetekstist.
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 Londiste kliendi seadistusfail, nt
$ 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
Replitseeritavate tabelite lisamine
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
Replitseeritavate tabelite eemaldamine
Subscriberi eemaldamiseks sobib öelda
$ londiste.py p-to-s.ini subscriber remove skeeminimi.tabelinimi
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