Erinevus lehekülje "Londiste" redaktsioonide vahel
(→Londiste tarkvara paigaldamine failisüsteemi) |
(→PgQ seadistamine masteris) |
||
90. rida: | 90. rida: | ||
$ londiste.py /etc/londiste/londiste.ini subscriber install | $ londiste.py /etc/londiste/londiste.ini subscriber install | ||
− | ===PgQ seadistamine masteris=== | + | ===PgQ seadistamine ja käivitamine masteris=== |
Masteri PgQ seadistamiseks sobib kasutada nt sellist seadistusfaili | Masteri PgQ seadistamiseks sobib kasutada nt sellist seadistusfaili | ||
116. rida: | 116. rida: | ||
* db - masteri andmebaas | * db - masteri andmebaas | ||
+ | |||
+ | ===Londiste kliendi käivitamine slave'is=== | ||
+ | |||
+ | $ londiste /etc/londiste/londiste.ini | ||
===Londiste kasutamine=== | ===Londiste kasutamine=== |
Redaktsioon: 13. aprill 2010, kell 23:15
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
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
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
$ 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