sql >> Database teknologi >  >> RDS >> PostgreSQL

Londiste-replikering med PostgreSQL 9.0

Londiste, Asynkron Master/Slave-replikeringsværktøj udviklet af Skytools. Den er meget enkel og brugervenlig skabt som Slony. Kernelogikken bag Londiste eller Slony er Remote Triggering. Hvorimod londiste følger event-kømodel, som ikke er deres i Slony – I.

Oversigt over Skytools:
Skytools er et Python-baseret program, det kommer med et bundt af tre ting PgQ,Londiste &Walmgr, og det kræver også Python-Postgres-driveren 'psycopg2'.

  • PGQ:Dens kømekanisme bygget med pl/pgsql med phython-ramme ovenpå.
  • Londiste:Et replikeringsværktøj skrevet i Phyton med PgQ som hændelsestransportør.
  • Walmgr:Opretter en WAL-arkiveringsopsætning.

Jeg vil ikke beskrive meget her vedrørende londiste replikeringsdæmonproces osv., fordi du kan finde den bedste tutorial vedrørende Skytools(PgQ/Londiste/WalMgr) i dette link http://skytools.projects.postgresql.org/doc/.

Grundlæggende inkluderer min demo, hvordan man fortsætter med Londiste-replikering med PostgreSQL 9.0 sammen med installationstrin. Jeg siger, Skytools-dokumentation og PostgreSQL Wiki (http://wiki.postgresql.org/wiki/Londiste_Tutorial) er mere end alt at lege med Londiste-replikering.

Forudsætninger med downloadlinks:

  • PostgreSQL – PostgreSQL 9.0 http://www.enterprisedb.com/products-services-training/pgdownload
  • skytools – skytools-2.1.12.tar.gz http://pgfoundry.org/frs/download.php/2872/skytools-2.1.12.tar.gz
  • psycopg2 – psycopg2-2.4.2.tar.gz http://initd.org/psycopg/tarballs/PSYCOPG-2-4/psycopg2-2.4.2.tar.gz

Min demo inkluderer følgende:-

OS                     : RHEL 6 32 bit
DB version : PostgreSQL 9.0
Two Clusters & Database: londiste_provider on 5432,Londiste_subscriber on 5433
Table : One Table (ltest)
Location of .ini file : /opt/skytools-2.1.12/scripts
Location of Skytools : /opt/skytools-2.1.12
Location of PG 9.0 : /opt/PostgreSQL/9.0/

Som sin simple demo med ét bord har jeg prøvet med RHEL 6 32bit/PostgreSQL 9.0 med to klynger i min lokale boks. Du bliver nødt til at tilpasse det i henhold til de faktiske krav.

Bemærk: Før jeg går videre med opsætningen, vil jeg gerne minde om, at alle kildeinstallationer skal være som root-brugere, og efter installationen skal disse mapper eje Postgres-brugertilladelser.

Trin 1.
Installer PostgreSQL 9.0 og opret to klynger med INITDB-kommandoen og sørg for, at de kører på 5432 og 5433 hver. (Husk, det er en gammel kendsgerning, at med INITDB-kommandoen pg_log-bibliotek ikke bliver oprettet under Data_directory, skal du oprette det eksplicit.)

Trin 2.
Installer skytools ved at downloade fra ovenstående link. Det er bedste praksis at opbevare alle kilder på én fælles standardplacering. Jeg brugte '/usr/local/src' og skytools under '/opt/'. Konfigurer nu skytools med PostgreSQL 9.0 'pg_config'.

# tar -xvf skytools-2.1.12.tar.gz
# cd /usr/local/src/skytools-2.1.12
# ./configure --prefix=/opt/skytools-2.1.12 --with-pgconfig=/opt/PostgreSQL/9.0/bin/pg_config
# make
# make install

Bemærk: Efter installationen vil du se to vigtige bidragsmoduler (pgq &londiste) under PostgreSQL bidragsplacering. Dybest set giver disse to bidrag dig funktionaliteten af ​​londiste replikering.

# cd /opt/PostgreSQL/9.0/share/postgresql/contrib
# ll lond*
-rw-r--r--. 1 root root 29771 Jan 11 13:24 londiste.sql
-rw-r--r--. 1 root root 27511 Jan 11 13:24 londiste.upgrade.sql

# ll pgq*
-rw-r--r--. 1 root root 4613 Jan 11 13:24 pgq_ext.sql
-rw-r--r--. 1 root root 1170 Jan 11 13:24 pgq_lowlevel.sql
-rw-r--r--. 1 root root 69798 Jan 11 13:24 pgq.sql
-rw-r--r--. 1 root root 3940 Jan 11 13:24 pgq_triggers.sql
-rw-r--r--. 1 root root 54182 Jan 11 13:24 pgq.upgrade.sql

Trin 3.
Installer psycopg2, det er en phyton-postgres-driver, som er nødvendig for skytools. Nogle gange kommer disse drivere ikke med python, så her er installationstrinnene.

# tar -xvf psycopg2-2.4.2.tar.gz
# cd psycopg2-2.4.2
# python setup.py install --prefix=/usr/local
# python setup.py build_ext --pg-config /opt/PostgreSQL/9.0/bin/pg_config

Trin 4.
Giv ejerskab af Postgres til skytools og postgres installationssted. Dette sikrer, at alle filer/eksekverbare filer er med Postgres-brugertilladelser.

# chown -R postgres:postgres /opt/skytools-2.1.12 
# chown -R postgres:postgres /opt/PostgreSQL/9.0/

Trin 5.
Indstil LD_LIBRARY_PATH &PYTHONPATH og start de to nyoprettede klynger. Du kan placere dem i .bash_profile af postgres bruger som permanent løsning.

$export PYTHONPATH=/opt/skytools-2.1.12/lib/python2.6/site-packages/
$export LD_LIBRARY_PATH=/opt/PostgreSQL/9.0/lib:/usr/lib:/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE:
or
$ vi .bash_profile
export PYTHONPATH=/opt/skytools-2.1.12/lib/python2.6/site-packages/
export LD_LIBRARY_PATH=/opt/PostgreSQL/9.0/lib:/usr/lib:/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE:
:wq
$ . .bash_profile (execute to take effect of new settings)

Now Start the two cluster

$ pg_ctl -o "-p 5432" -D /opt/PostgreSQL/9.0/data start
$ pg_ctl -o "-p 5433" -D /opt/PostgreSQL/9.0/data_1 start

Trin 6.
Opret to databaser, londiste_provider i 5432 og londiste_subscriber i 5433. Opret en tabel med primærnøglenavnet 'ltest' i to databaser og INDSÆT nogle data i londiste_provider (ltest)-tabellen og senere færdiggørelse af replikeringsopsætningen bør du se disse INSERT data i londiste_subscriber side.

Du behøver muligvis ikke CRETAE TABLE på slavesiden, i stedet kan du bruge struktur dump/gendan ved at bruge pg_dump/pg_restore, hvis du har mange tabeller.

On 5432
psql -p 5432 -c "create database londiste_provider;"
psql -p 5432 londiste_provider
londiste_provider=# create table ltest(id int primary key);
londiste_provider=# insert into ltest VALUES (generate_series(1,10));
INSERT 0 10

On 5433
psql -p 5433 -c "create database londiste_subscriber;"
psql -p 5433 londiste_subscriber
londiste_subscriber=# create table ltest(id int primary key);

Trin 7.
Opret to .ini-filer, en for londiste(londiste.ini) og en anden for PgQ ticker(pgq_ticker.ini). Du kan også finde eksempler på .ini-filer fra basisinstallationen af ​​skytools. F.eks.:- "/opt/skytools-2.1.12/share/doc/skytools/conf" placering.

Trin 8.
Opret to mapper til logfiler og PID-filer, og peg dem i parametrene londiste.ini og pgq_ticker.ini.

$ cd /opt/PostgreSQL/9.0
$ mkdir log pid

Trin 9 .
Start replikeringen med .ini-filer, installer først londiste på udbyder og abonnent og start derefter tickeren (PgQ) til replikering af tabellerne.

Installer londiste på udbyder og abonnent med nedenstående kommandoer én efter én:

$ cd /opt/skytools-2.1.12/bin
$ ./londiste.py ../scripts/londiste.ini provider install
2012-01-12 14:56:03,667 11073 INFO plpgsql is installed
2012-01-12 14:56:03,674 11073 INFO txid_current_snapshot is installed
2012-01-12 14:56:03,675 11073 INFO Installing pgq
2012-01-12 14:56:03,676 11073 INFO Reading from /opt/skytools-2.1.12/share/skytools/pgq.sql
2012-01-12 14:56:03,816 11073 INFO Installing londiste
2012-01-12 14:56:03,816 11073 INFO Reading from /opt/skytools-2.1.12/share/skytools/londiste.sql

-bash-4.1$ ./londiste.py ../scripts/londiste.ini subscriber install
2012-01-12 14:56:17,871 11081 INFO plpgsql is installed
2012-01-12 14:56:17,872 11081 INFO Installing londiste
2012-01-12 14:56:17,873 11081 INFO Reading from /opt/skytools-2.1.12/share/skytools/londiste.sql

-->Now, Install PqQ and start ticker with .ini file.

-bash-4.1$ ./pgqadm.py ../scripts/pgqadm.ini install
2012-01-11 16:45:03,219 6348 INFO plpgsql is installed
2012-01-11 16:45:03,225 6348 INFO txid_current_snapshot is installed
2012-01-11 16:45:03,228 6348 INFO pgq is installed

-bash-4.1$ ./pgqadm.py -d ../scripts/pgqadm.ini ticker -d

-->Add the table to provider & subscriber to replicate.

-bash-4.1$ ./londiste.py ../scripts/londiste.ini provider add ltest
2012-01-12 15:03:39,583 11139 INFO Adding public.ltest

-bash-4.1$ ./londiste.py ../scripts/londiste.ini subscriber add ltest
2012-01-12 15:03:47,367 11146 INFO Checking public.ltest
2012-01-12 15:03:47,384 11146 INFO Adding public.ltest

Efter tilføjelse starter replikeringen af ​​tabellen.

-bash-4.1$ ./londiste.py ../ scripts/londiste.ini replay -d

Note: "-d" option is to run the londiste/PgQ daemons in background.

Fuldfør her replikeringsopsætningen. Nu skulle du se "ltest" tabeldataene på slavesiden (dvs. på 5433-porten).

Trin 10.
Lad os nu forstå, hvad der skete i baggrunden med tabel/logfiler/pids/data osv., lad os se én efter én.

Logoplysninger:

Tabelstruktur efter replikering:

Status for begivenhedskø
Replikeringsstatus kan kontrolleres med pgq-værktøjet som nedenfor:-

-bash-4.1$ ./pgqadm.py ../scripts/pgqadm.ini status
Postgres version: 9.0.1 PgQ version: 2.1.8

Event queue Rotation Ticker TLag
------------------------------------------------------------------------------
londiste.replica 3/7200s 500/3s/60s 6s
------------------------------------------------------------------------------

Consumer Lag LastSeen
------------------------------------------------------------------------------
londiste.replica:
myfirstlondiste 6s 6s
------------------------------------------------------------------------------

Bemærk: Der er meget gode muligheder med Londiste &PGQ-værktøjer til at udføre forskning og udvikling.
Håber I alle har en succesfuld Londiste-replikeringsopsætning. Skriv venligst dine kommentarer, de er meget værdsat. Vi ses alle sammen snart med nogle flere opslag.


  1. Forstå forskellen mellem EXCEPT og NOT IN-operatører

  2. Oracle-proceduren returnerer ikke resultater, når den udføres fra scriptopgave på SSIS

  3. Find mandage mellem 2 datoer

  4. Salesforce SOQL fra Java