Londiste v. 3
Sissejuhatus
2013 aasta suvel on üldiselt soovitav kasutada Skytools v. 3 https://github.com/markokr/skytools (varem http://pgfoundry.org/projects/skytools/) tarkvara, mille hulka kuulub ka Londiste v. 3. Muu hulgas on võimalik tekitada selliseid asjakorraldusi
- nö tavaline master - slave (ehk root - leaf) lülitus
- root - branch - leaf topoloogia, kus võib branch ja leaf node'ide arv olla suurem kui üks
- node'ide rollide vahetus töö käigus
Eesmärk
Käesolevas tekstis käsitletakse nö tavalist master-slave lülitust kusjuures ühe masteri suhtes on käivitatud kaks võrdväärset slave'i
- ühes arvutis (node1) on create database andmebaas 'lont1'
- teises arvutis (node2) on create database andmebaas 'lont2' (st src ja dst andmebaasid on erinevate nimedega)
- kolmandas arvutis (node3) on create database andmebaas 'lont2' (st src ja dst andmebaasid on erinevate nimedega)
- mõlemas andmebaasis on skeem 'skeeminimi' ja seal tabel 'tabelinimi'
- replitseerimine toimub andmebaaside mõttes suunal lont1 -> lont2 (node2) ja ainult sellel suunal
- replitseerimine toimub andmebaaside mõttes suunal lont1 -> lont2 (node3) ja ainult sellel suunal
Tööpõhimõte
Replikeerimisega tegeldakse eraldi (tavaliselt superuser privileegiga) kasutajana, nt skytools, mis tarkvara paigaldamisel automaatselt tekitatakse.
Mõisted
- root ehk master
- branch - on ise masteri suhtes slave ja samas mõne muu suhtes master
- leaf ehk slave
Londiste töötamist võiks kujutada sellise skeemiga
___ | | |___| MASTER SLAVE 1 | 10.100.13.181 10.100.13.182 | ---- > ---- | -----|---------------------------------------|-----------------|----- | | | _|_ _|_ 10.100.13.183 | | | | SLAVE 2 |___| |___| seadistusfail: etc/pgqd.ini etc/londiste.ini protsess: $ pgqd etc/pgqd.ini $ londiste3 etc/londiste.ini worker
Master-slave juhtumil
- master arvutis töötab ainult pgqd protsess
- slave arvutis töötab ainult londiste protsess
SQL ühendused
- master arvuti pgqd protsess pöördub ainult sama master arvuti postgresqli poole
- leaf arvuti londiste protsess pöördub masteri ja enda postgresqli poole
- üldiselt oleks parem kui kõik saavad kõigi poole pöörduda
Võrreldes eelmiste Londiste versioonidega on võimalik nö käigult replikatsiooni suunda muuta ja seepärast tavaliselt tekitatakse mõlemasse arvutisse masteri ja slave jaoks vajalikud skeemid automaatselt ära. Ning käivitatakse ka pgqd ning londiste protsessid. Aga vabalt võib ka src node peal käivatada ka ainult ticker protsessi (pgqd) ning dst peal vaid londiste protsessi juhtumil kui sünkimine hakkab tööle rangelt ainult ühes suunas.
Muudatused replikeeritavates tabelites, src tabelile lisatakse sellised iseloomulikud triggerid (dst tabelile lisatakse sarnased)
kus
- londiste_replika
- londiste_replika_truncate
- sõne 'replika' tuleneb londiste konkreetsest seadistusest
Väited
- Londiste tegeleb põhimõtteliselt vaid andmete st tabelite sisu sünkimisega. Seega, src ja dst tabelite omanikud ja grantid võivad olla sellised nagu tarvis.
- dst tabeli võib tekitada käsitsi, võib lasta tekitada Londistel.
- dst tabeli nimi ei pea olema sama, asjakohane parameeter on --dest-table=NAME
- Sünkimise Lag võib pealtnäha minna suureks (mõni minut), tavaliselt on selle põhjuseks, et src tabelis ei toimu muudatusi. Iseenesest on ootuspärane lag mõni sekund.
- londistega seotud baasi kasutaja 'skytools' ei pruugi olla tingimata superuser privileegiga, aga tavaliselt nii tehakse
- kui londiste on mõnda aega töötanud ja leaf node on siiski süngist lootusetult ära, siis võib src ja dst tabelid jätta nagu nad on, peatada pgqd ja londiste protsessid, eemaldada londiste skeemid ja tekitada setup uuesti (dst tabeleid ei ole vaja kustutada, londiste haldab olukorra ise);
- ühesuunalise sünkimise puhul on root node NOT UPTODATE
$ londiste3 etc/londiste.ini status Queue: replika Local node: node2 node1 (root) | Tables: 5/0/0 | Lag: 49s, Tick: 125, NOT UPTODATE +--: node2 (leaf) | Tables: 5/0/0 | Lag: 49s, Tick: 125 +--: node3 (leaf) Tables: 5/0/0 Lag: 49s, Tick: 125
kus
- Tables: x/y/z - tegeldakse 5 tableiga ja nad kõik on ok (x) olekus
Kasulikud lisamaterjalid
Tarkvara paigaldamine
Lisaks nö tavalisele PostgreSQL serveri osale tuleb paigaldada mõlemasse arvutisse veel skytools3 ja mõned asjasse puutuvad paketid. Maksab tähele panne, et pakett skytools-modules-9.2 on seotud Skytools v. 2 tarkvaraga.
Antud juhul kasutatakse PostgreSQL v. 9.2 ja Skytools v. 3 tarkvara PGDG repositooriumist https://wiki.postgresql.org/wiki/Apt.
Enne ROOT või LEAF node'i tarkvara paigaldamist võib olla vajalik seadistada sobiv PYTHONPATH (kuigi vastav veateade praktiliselt ei sega paigaldamise edukust)
# export PYTHONPATH=/usr/lib/python2.7/site-packages
ROOT node
ROOT node'i lisada paketid
# apt-get install skytools3 # apt-get install skytools3-ticker # apt-get install postgresql-9.2-pgq3
LEAF node
Kõigisse LEAF node'didesse lisada paketid
# apt-get install skytools3 # apt-get install postgresql-9.2-pgq3
Tundub, et selleks, et mitte saada selliseid veateateid, tuleb kasutaja kodukataloog enne valmis tekitada vms (seda on selles mõttes keeruline teha, et paketi paigaldamisel automaatselt kasutaja:grupp tekitatakse)
.. Warning: The home dir /var/lib/skytools you specified can't be accessed: No such file or directory Adding system user `skytools' (UID 104) ... Adding new group `skytools' (GID 109) ... Adding new user `skytools' (UID 104) with group `skytools' ... Not creating home directory `/var/lib/skytools'. update-alternatives: using /usr/bin/londiste3 to provide /usr/bin/londiste (londiste) in auto mode. update-alternatives: using /usr/bin/scriptmgr3 to provide /usr/bin/scriptmgr (scriptmgr) in auto mode. update-alternatives: using /usr/bin/queue_mover3 to provide /usr/bin/queue_mover (queue_mover) in auto mode. update-alternatives: using /usr/bin/queue_splitter3 to provide /usr/bin/queue_splitter (queue_splitter) in auto mode. Traceback (most recent call last): File "/usr/bin/scriptmgr3", line 48, in <module> import pkgloader ImportError: No module named pkgloader
Tundub, et aitab
# export PYTHONPATH=/usr/lib/python2.7/site-packages
Ettevalmistamine
Lähtepunktiks on, et PostgreSQL andmebaasid üldiselt töötavad. Skytools tarkvara paigaldamise käigus tekitatakse operatsioonisüsteemi kaustaja:grupp skytools:skytools kodukataloogiga /var/lib/skytools. Tundub, et selle kataloogi peab tekitama
# mkdir -p /var/lib/skytools/etc # chown -R skytools:skytools /var/lib/skytools /var/log/skytools /var/run/skytools
ja kasutaja shelli võiks muuta /etc/passwd failis
/bin/false -> /bin/bash
- seadistusfailid võiks paigutada tema kodukataloogi etc alamkataloogi, st /var/lib/skytools/etc
- logifailid /var/log/skytools kataloogi
- pid failid /var/run/skytools kataloogi
Andmebaasidesse tuleks moodustada skytools nimeline superuser privileegidega kasutaja
SQL> create role skytools login password 'salajane123' SUPERUSER INHERIT NOCREATEDB NOCREATEROLE;
määrata parool üle võrgu pöördumiseks parool ning lokaalselt pöördumiseks pg_hba.conf failis kasutada ridu (kui baasidel on virtuaalne ip, siis kasutada seda)
local all skytools peer host all skytools sl.av.e.ip/32 md5 host all skytools ma.ast.er.ip/32 md5
Kuna londiste paigaldamisel tekitatakse kõnealusesse create database andmebaasi skeemid
- londiste
- pgq
- pgq_ext
- pgq_node
siis ei tohi selliste nimedega skeeme eelnevalt seal olemas olla. Nt varasema Londiste paigalduse puhul tõenäoliselt tuleb ja on ohutu öelda
SQL> drop schema londiste cascade; SQL> drop schema pgq cascade;
Seadistamine
Tegevuste sooritamisel on huvitav jälgida
- londiste logi
- pgq_node.node_location
etc/londiste.ini seadistusfaili näidise esitamiseks
$ londiste3 --ini
ROOT node
Seadistusfail
skytools $ cd /var/lib/skytools skytools $ mkdir etc skytools $ cat etc/londiste.ini [londiste3] job_name = lont1-db db = dbname=lont1 queue_name = replika logfile = /var/log/skytools/lont1-db.log pidfile = /var/run/skytools/lont1-db.pid
kus
- db - andmebaasi connection string, mida kasutatakse lokaalselt pöördumiseks (tõenäoliselt piisab üle UNIX soketi kasutamisest)
- job_name -
- queue_name -
Esmakordne käivitamine
skytools@lont1:~$ londiste3 etc/londiste.ini create-root node1 \ "dbname=lont1 port=5432 host=10.100.13.181 user=skytools password=salajane123" 2013-08-28 11:20:09,501 26366 INFO plpgsql is installed 2013-08-28 11:20:09,501 26366 INFO Installing pgq 2013-08-28 11:20:09,502 26366 INFO Reading from /usr/share/skytools3/pgq.sql 2013-08-28 11:20:09,865 26366 INFO pgq.get_batch_cursor is installed 2013-08-28 11:20:09,866 26366 INFO Installing pgq_ext 2013-08-28 11:20:09,866 26366 INFO Reading from /usr/share/skytools3/pgq_ext.sql 2013-08-28 11:20:09,943 26366 INFO Installing pgq_node 2013-08-28 11:20:09,943 26366 INFO Reading from /usr/share/skytools3/pgq_node.sql 2013-08-28 11:20:10,030 26366 INFO Installing londiste 2013-08-28 11:20:10,030 26366 INFO Reading from /usr/share/skytools3/londiste.sql 2013-08-28 11:20:10,180 26366 INFO londiste.global_add_table is installed 2013-08-28 11:20:10,194 26366 INFO Initializing node 2013-08-28 11:20:10,196 26366 INFO Location registered 2013-08-28 11:20:10,283 26366 INFO Node "node1" initialized for queue "replika" with type "root" 2013-08-28 11:20:10,287 26366 INFO Done
kus
- create-root node1 -
- 10.100.13.181 - root node enda ip aadress
- viimane argument on nö üle võrgu kasutamiseks sobiv andmebaasi conn string (mis kirjutatakse pgq_node.node_location tabelisse)
Seejärel moodustada masterisse pgqd seadistusfail
$ cat /var/lib/skytools/etc/pgqd.ini [pgqd] database_list = lont1 logfile = /var/log/skytools/pgqd.log pidfile = /var/run/skytools/pgqd.pid
kus
- database_list - vaikimisi tegeleb pgqd kõigi create database andmebaasidega, siin saab seda baaside hulka piirata (eraldajateks koma)
Käivitada pgqd
skytools$ pgqd etc/pgqd.ini
LEAF node üks
Seadistusfail
$ cat etc/londiste.ini [londiste3] job_name = lont2-db-node2 db = dbname=lont2 queue_name = replika logfile = /var/log/skytools/lont2-db.log pidfile = /var/run/skytools/lont2-db.pid
Esmakordne käivitamine
skytools@lont2:~l$ londiste3 etc/londiste.ini create-leaf node2 \ "dbname=lont2 port=5432 host=10.100.13.182 user=skytools password=salajane123" \ --provider="dbname=lont1 port=5432 host=10.100.13.181 user=skytools password=salajane123" 2013-08-28 11:48:23,496 23976 INFO plpgsql is installed 2013-08-28 11:48:23,497 23976 INFO Installing pgq 2013-08-28 11:48:23,498 23976 INFO Reading from /usr/share/skytools3/pgq.sql 2013-08-28 11:48:23,670 23976 INFO pgq.get_batch_cursor is installed 2013-08-28 11:48:23,670 23976 INFO Installing pgq_ext 2013-08-28 11:48:23,671 23976 INFO Reading from /usr/share/skytools3/pgq_ext.sql 2013-08-28 11:48:23,723 23976 INFO Installing pgq_node 2013-08-28 11:48:23,723 23976 INFO Reading from /usr/share/skytools3/pgq_node.sql 2013-08-28 11:48:23,799 23976 INFO Installing londiste 2013-08-28 11:48:23,800 23976 INFO Reading from /usr/share/skytools3/londiste.sql 2013-08-28 11:48:23,942 23976 INFO londiste.global_add_table is installed 2013-08-28 11:48:23,954 23976 INFO Initializing node 2013-08-28 11:48:24,027 23976 INFO Location registered 2013-08-28 11:48:24,033 23976 INFO Location registered 2013-08-28 11:48:24,046 23976 INFO Subscriber registered: node2 2013-08-28 11:48:24,050 23976 INFO Location registered 2013-08-28 11:48:24,052 23976 INFO Location registered 2013-08-28 11:48:24,056 23976 INFO Node "node2" initialized for queue "replika" with type "leaf" 2013-08-28 11:48:24,060 23976 INFO Done
kus
- eelviimane argument on nö üle võrgu kasutamiseks sobiv andmebaasi conn string (mis kirjutatakse pgq_node.node_location tabelisse
- viimane on lihtsalt kõnealuse käsu täitmiseks vajalik master baasi asukoht
Seejärel tuleb käivitada londiste protsess
skytools$ londiste3 etc/londiste.ini worker
LEAF node kaks
LEAF node kaks on üldises numeratsioonid node3, seadistusfail
$ cat etc/londiste.ini [londiste3] job_name = lont2-db-node3 db = dbname=lont2 queue_name = replika logfile = /var/log/skytools/lont2-db.log pidfile = /var/run/skytools/lont2-db.pid
Esmakordne käivitamine
skytools@lont2:~l$ londiste3 etc/londiste.ini create-leaf node3 \ "dbname=lont2 port=5432 host=10.100.13.183 user=skytools password=salajane123" \ --provider="dbname=lont1 port=5432 host=10.100.13.181 user=skytools password=salajane123" 2013-08-28 11:48:23,496 23976 INFO plpgsql is installed 2013-08-28 11:48:23,497 23976 INFO Installing pgq 2013-08-28 11:48:23,498 23976 INFO Reading from /usr/share/skytools3/pgq.sql 2013-08-28 11:48:23,670 23976 INFO pgq.get_batch_cursor is installed 2013-08-28 11:48:23,670 23976 INFO Installing pgq_ext 2013-08-28 11:48:23,671 23976 INFO Reading from /usr/share/skytools3/pgq_ext.sql 2013-08-28 11:48:23,723 23976 INFO Installing pgq_node 2013-08-28 11:48:23,723 23976 INFO Reading from /usr/share/skytools3/pgq_node.sql 2013-08-28 11:48:23,799 23976 INFO Installing londiste 2013-08-28 11:48:23,800 23976 INFO Reading from /usr/share/skytools3/londiste.sql 2013-08-28 11:48:23,942 23976 INFO londiste.global_add_table is installed 2013-08-28 11:48:23,954 23976 INFO Initializing node 2013-08-28 11:48:24,027 23976 INFO Location registered 2013-08-28 11:48:24,033 23976 INFO Location registered 2013-08-28 11:48:24,046 23976 INFO Subscriber registered: node2 2013-08-28 11:48:24,050 23976 INFO Location registered 2013-08-28 11:48:24,052 23976 INFO Location registered 2013-08-28 11:48:24,056 23976 INFO Node "node2" initialized for queue "replika" with type "leaf" 2013-08-28 11:48:24,060 23976 INFO Done
kus
- eelviimane argument on nö üle võrgu kasutamiseks sobiv andmebaasi conn string (mis kirjutatakse pgq_node.node_location tabelisse
- viimane on lihtsalt kõnealuse käsu täitmiseks vajalik master baasi asukoht
Seejärel tuleb käivitada londiste protsess
skytools$ londiste3 etc/londiste.ini worker
Tabelite Londiste kontrolli alla lisamine
- ROOT node'is peab olema olemas või tuleb tekitada kõnealune tabel
- lisada ROOT node'is Londiste kontrolli alla
skytools@lont1:~/l$ londiste3 etc/londiste.ini add-table skeeminimi.tabelinimi 2013-08-28 15:16:48,016 32327 INFO Table added: skeeminimi.tabelinimi
- LEAF node'is ei pea tingimata tabelit olemas olema, Londiste kontrolli alla lisamiseks öelda
skytools@lont2:~/l$ londiste3 etc/londiste.ini add-table skeeminimi.tabelinimi --create-full 2013-08-28 15:17:54,643 27966 INFO Creating skeeminimi.tabelinimi 2013-08-28 15:17:54,662 27966 INFO Creating tabelinimi_pkey 2013-08-28 15:17:54,665 27966 INFO Creating _londiste_replika 2013-08-28 15:17:54,666 27966 INFO Creating _londiste_replika_truncate 2013-08-28 15:17:54,667 27966 INFO Creating Owner 2013-08-28 15:17:54,763 27966 INFO Table added: skeeminimi.tabelinimi
kus
- --create-full - tekitatakse tabel automaatselt; ilma parameetrita peab tabel olemas olema
Tabelite Londiste kontrolli alt eemaldamine
Leafist (ja vajadusel sama rootist)
postgres@lont2:~/l$ londiste3 etc/londiste.ini remove-table tabelinimi
kus
- tabelinimi asemel võib kasutada --all, mis eemaldab kõik (praktiliselt jääb tabel iseenesest alles, aga eemaldadakse londistega seotud kaks triggerit)
Kontroll
Kõigis arvutites võib öelda ja tulemus peaks olema sarnane
postgres@lont1:~/l$ londiste3 etc/londiste.ini members Member info on node1@replika: node_name dead node_location --------------- --------------- --------------------------------------------------------------------------- node1 False dbname=lont1-db port=5432 host=10.100.13.181 user=postgres password=salajane123 node2 False dbname=lont2-db port=5432 host=10.100.13.182 user=postgres password=salajane123 node3 False dbname=lont2-db port=5432 host=10.100.13.183 user=postgres password=salajane123
Replikeeritavate tabelite nimekiri
postgres@lont2:~/l$ londiste3 etc/londiste.ini tables Tables on node table_name merge_state table_attrs ----------------------- --------------- --------------- public.pgbench_accounts ok public.pgbench_branches ok public.pgbench_history ok public.pgbench_tellers ok
Status küsimiseks suvalises arvutis
postgres@lont2:~/l$ londiste3 etc/londiste.ini status Queue: replika Local node: node2 node1 (root) | Tables: 4/0/0 | Lag: 7s, Tick: 71 +--node2 (leaf) | Tables: 4/0/0 | Lag: 7s, Tick: 71 +--node2 (leaf) Tables: 4/0/0 Lag: 7s, Tick: 71
Samuti mõlemas arvuti võib öelda ja tulemus peaks olema sarnane
postgres@lont1:~/$ londiste3 etc/londiste.ini compare 2013-08-28 14:19:54,032 30771 INFO Checking if node1 can be used for copy 2013-08-28 14:19:54,033 30771 INFO Node node1 seems good source, using it 2013-08-28 14:19:54,034 30771 INFO public.pgbench_accounts: Using node node1 as provider 2013-08-28 14:19:54,084 30771 INFO Provider: node1 (root) 2013-08-28 14:19:54,090 30771 INFO Locking public.pgbench_accounts 2013-08-28 14:19:54,091 30771 INFO Syncing public.pgbench_accounts 2013-08-28 14:19:56,615 30771 INFO Counting public.pgbench_accounts 2013-08-28 14:19:57,094 30771 INFO srcdb: 200000 rows, checksum=118951844893 2013-08-28 14:19:57,522 30771 INFO dstdb: 200000 rows, checksum=118951844893 ...
qadmin kasutamine
Programmi käivitamiseks
postgres@lont1:~$ qadmin -d l3simple_db1 Welcome to qadmin 3.1.3 (server 9.2.4), the PgQ interactive terminal. Use 'show help;' to see available commands. (noqueue)@l3simple_db1>
Queuede nimekiri
(noqueue)@l3simple_db1> show queue; Queue "*": queue_name tables max_count max_lag idle_period paused ticker_lag ev_per_sec ev_new ---------- ---------- ---------- ---------- ----------- ---------- -------------- ---------------- ---------- replika 1/3 500 0:00:03 0:01:00 False 0:00:48.481524 0.00845853248314 0
Ühendumine konkreetse queuega
replika@l3simple_db1> connect queue=replika;
queue uurimine
replika@l3simple_db1> londiste tables; Local tables on queue "replika": table_name local merge_state custom_snapshot table_attrs dropped_ddl copy_role copy_pos dest_table ----------------------- ---------- ----------- --------------- ----------- ----------- ---------- ---------- ---------- public.pgbench_accounts True ok None None None None 0 None public.pgbench_branches True ok None None None None 0 None public.pgbench_history True ok None None None None 0 None public.pgbench_tellers True ok None None None None 0 None public.tabelinimi True ok None None None None 0 None
Käivitusskriptid operatsioonisüsteemiga Debian v. 7 Wheezy
Protsessid käivitatakse skytools kasutajana.
PgQ
pgqd käivitamiseks sobib kasutada nt sellist käivitusskripti, nb! Required-Start real on viimane postgresql
# cat /etc/init.d/pgqd #!/bin/sh ### BEGIN INIT INFO # Provides: pgqd # Required-Start: $network $local_fs $remote_fs postgresql # Required-Stop: $network $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Skype tools for PostgreSQL replication, londiste and PGQ ### END INIT INFO case "$1" in start) echo "Starting PgQ ticker" /bin/su - skytools -c "/usr/bin/pgqd -d /var/lib/skytools/etc/pgqd.ini" ;; stop) echo "Stopping PgQ ticker" /bin/su - skytools -c "/usr/bin/pgqd -s /var/lib/skytools/etc/pgqd.ini" ;; *) echo "Usage: /etc/init.d/pgqd { start | stop }" exit 1 esac exit 0
/etc/rc2.d jt linkide tekitamiseks sobib öelda nt
# insserv -n -d pgqd insserv: enable service ../init.d/pgqd -> /etc/init.d/../rc0.d/K01pgqd insserv: enable service ../init.d/pgqd -> /etc/init.d/../rc1.d/K01pgqd insserv: enable service ../init.d/pgqd -> /etc/init.d/../rc2.d/S21pgqd insserv: enable service ../init.d/pgqd -> /etc/init.d/../rc3.d/S21pgqd insserv: enable service ../init.d/pgqd -> /etc/init.d/../rc4.d/S21pgqd insserv: enable service ../init.d/pgqd -> /etc/init.d/../rc5.d/S21pgqd insserv: enable service ../init.d/pgqd -> /etc/init.d/../rc6.d/K01pgqd insserv: dryrun, not creating .depend.boot, .depend.start, and .depend.stop
ja tegelikult jätta -n ära.
Londiste
Londiste käivitamiseks sobib kasutada nt sellist käivitusskripti
# cat /etc/init.d/londiste #!/bin/sh ### BEGIN INIT INFO # Provides: londiste # Required-Start: $network $local_fs $remote_fs postgresql # Required-Stop: $network $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Skype tools for PostgreSQL replication, londiste and PGQ ### END INIT INFO case "$1" in start) echo "Starting Londiste" /bin/su - skytools -c "/usr/bin/londiste3 -d /var/lib/skytools/etc/londiste.ini worker" ;; stop) echo "Stopping Londiste" /bin/su - skytools -c "/usr/bin/londiste3 -s /var/lib/skytools/etc/londiste.ini" ;; *) echo "Usage: /etc/init.d/londiste { start | stop }" exit 1 esac exit 0
/etc/rc2.d jt linkide tekitamiseks sobib öelda nt
# insserv -d londiste
Käivitusskriptid operatsioonisüsteemiga Ubuntu v. 12.04 Precise
Protsessid käivitatakse skytools kasutajana.
PgQ
pgqd käivitamiseks sobib kasutada nt sellist käivitusskripti
# cat /etc/init.d/pgqd #!/bin/sh ### BEGIN INIT INFO # Provides: pgqd # Required-Start: $network $local_fs $remote_fs # Required-Stop: $network $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Skype tools for PostgreSQL replication, londiste and PGQ ### END INIT INFO case "$1" in start) echo "Starting PgQ ticker" /bin/su - skytools -c "/usr/bin/pgqd -d /var/lib/skytools/etc/pgqd.ini" ;; stop) echo "Stopping PgQ ticker" /bin/su - skytools -c "/usr/bin/pgqd -s /var/lib/skytools/etc/pgqd.ini" ;; *) echo "Usage: /etc/init.d/pgqd { start | stop }" exit 1 esac exit 0
/etc/rc2.d jt linkide tekitamiseks sobib öelda nt
# update-rc.d pgqd defaults 91
Londiste
Londiste käivitamiseks sobib kasutada nt sellist käivitusskripti
# cat /etc/init.d/londiste #!/bin/sh ### BEGIN INIT INFO # Provides: londiste # Required-Start: $network $local_fs $remote_fs # Required-Stop: $network $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Skype tools for PostgreSQL replication, londiste and PGQ ### END INIT INFO case "$1" in start) echo "Starting Londiste" /bin/su - skytools -c "/usr/bin/londiste3 -d /var/lib/skytools/etc/londiste.ini worker" ;; stop) echo "Stopping Londiste" /bin/su - skytools -c "/usr/bin/londiste3 -s /var/lib/skytools/etc/londiste.ini" ;; *) echo "Usage: /etc/init.d/londiste { start | stop }" exit 1 esac exit 0
/etc/rc2.d jt linkide tekitamiseks sobib öelda nt
# update-rc.d londiste defaults 91
Käivitusskriptid operatsioonisüsteemiga Ubuntu v. 16.04 Xenial
PgQ
Ubuntu v. 16.04 keskkonnas on kõige loomulikum kontrollida londiste töötamist systemd abil. PGQD osa
# cat /opt/skytools/bin/pgqd.sh #!/bin/bash case "$1" in start) echo "Starting PGQD" /usr/bin/pgqd /var/lib/skytools/etc/pgqd.ini ;; esac exit 0
ning
# cat /etc/systemd/system/pgqd.service [Unit] Description=PGQD After=syslog.target network.target After=postgresql.service Before=httpd.service [Service] User=skytools PIDFile=/var/run/pgqd-systemd/pgqd-sytemd.pid ExecStart=/opt/skytools/bin/pgqd.sh start StandardOutput=syslog StandardError=syslog SyslogIdentifier=pgqd [Install] WantedBy=multi-user.target
ning
# systemctl enable pgqd # systemctl start pgqd # systemctl status pgqd
Londiste
Londiste osa jaoks sobib kasutada
# cat /opt/skytools/bin/londiste.sh #!/bin/bash case "$1" in start) echo "Starting Londiste" /usr/bin/londiste3 /var/lib/skytools/etc/londiste.ini worker ;; esac exit 0
ning
# cat /etc/systemd/system/londiste.service [Unit] Description=Londiste After=syslog.target network.target After=postgresql.service Before=httpd.service [Service] # Type=oneshot User=skytools PIDFile=/var/run/londiste-systemd/londiste-sytemd.pid ExecStart=/opt/skytools/bin/londiste.sh start # ExecStop=/opt/londiste/bin/londiste.sh stop StandardOutput=syslog StandardError=syslog SyslogIdentifier=londiste [Install] WantedBy=multi-user.target
ning
# systemctl enable londiste # systemctl start londiste # systemctl status londiste
Londiste eemaldamine andmebaasist
Londiste eemaldamiseks create database andmebaasist tuleb esmalt peatada operatsioonisüsteemis protsessid ja seejärel kustutada neli skeemi
- pgq
- pgq_ext
- pgq_node
- londiste
# drop schema pgq cascade; # drop schema pgq_ext cascade; # drop schema pgq_node cascade; # drop schema londiste cascade;
Seejuures kustutatakse automaatselt Londiste poolt sünkroniseeritavatele tabelitele lisatud triggerid.
Märkused
- Mitme baasi jaoks leaf olemisel tuleb käivitada vastavas arvutis erinevate seadistustega mitu londiste3 protsessi.
Ubuntu v. 16.04 Xenial keskkonnas kasutamine
- Tundub, et sellise muutuja seadistamine ei ole vajalik
# export PYTHONPATH=/usr/lib/python2.7/site-packages
kuna failid on kataloogis
/usr/lib/python2.7/dist-packages
Londiste kasutamine koos PGDG PostgreSQL v. 10 Ubuntu 16.04 keskkonnas
ROOT node
# apt-get install skytools3 pgqd postgresql-10-pgq3
LEAF node (pgqd vist ei ole vajalik põhimõtteliselt, aga sõltuvusena paigaldataks ta niikuinii)
# apt-get install skytools3 pgqd postgresql-10-pgq3