Londiste v. 3

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

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)

Fail:Londiste-1.gif

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

Kasulikud lisamaterjalid