sql >> Databáze >  >> RDS >> PostgreSQL

Replikace Londiste s PostgreSQL 9.0

Londiste, asynchronní replikační nástroj Master/Slave vyvinutý společností Skytools. Je to velmi jednoduché a uživatelsky přívětivé vytvořené jako Slony. Základní logikou za Londisty nebo Slony je vzdálené spouštění. Zatímco londiste se řídí modelem řazení událostí, který ve Slony není jejich – I.

Přehled Skytools:
Skytools je aplikace založená na Pythonu, přichází s balíkem tří věcí PgQ, Londiste &Walmgr a také vyžaduje ovladač Python-Postgres ‚psycopg2‘.

  • PGQ:Mechanismus fronty vytvořený pomocí pl/pgsql s rámcem phython nad ním.
  • Londiste:Replikační nástroj napsaný v Phytonu využívající PgQ jako transportér událostí.
  • Walmgr:Vytvoří nastavení archivace WAL.

Nebudu zde moc popisovat proces replikačního démona londiste atd., protože nejlepší návod ohledně Skytools (PgQ/Londiste/WalMgr) najdete na tomto odkazu http://skytools.projects.postgresql.org/doc/.

Moje ukázka v podstatě zahrnuje, jak postupovat s replikací Londiste s PostgreSQL 9.0 spolu s kroky instalace. Říkám, že dokumentace Skytools a PostgreSQL Wiki (http://wiki.postgresql.org/wiki/Londiste_Tutorial) jsou víc než cokoliv, co si s replikací Londiste můžete pohrát.

Předběžné požadavky s odkazy ke stažení:

  • 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

Moje ukázka obsahuje následující :-

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/

Jako jeho jednoduché demo s jednou tabulkou jsem vyzkoušel RHEL 6 32bit/PostgreSQL 9.0 se dvěma clustery v mém lokálním boxu. Budete jej muset vyladit podle skutečných požadavků.

Poznámka: Než se pustím do nastavení, rád bych připomněl, že všechny zdrojové instalace musí být jako uživatel root a po instalaci by tyto adresáře měly vlastnit uživatelská oprávnění Postgres.

Krok 1.
Nainstalujte PostgreSQL 9.0 a vytvořte dva clustery pomocí příkazu INITDB a ujistěte se, že každý běží na 5432 a 5433. (Pamatujte si, že je starým faktem, že příkazem INITDB nebude adresář pg_log vytvořen pod Data_directory, musíte jej vytvořit explicitně.)

Krok 2
Nainstalujte skytools stažením z výše uvedeného odkazu. Jeho osvědčeným postupem je uchovávat všechny zdroje na jednom společném standardním místě. Použil jsem „/usr/local/src“ a skytools pod „/opt/“. Nyní nakonfigurujte skytools pomocí 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

Poznámka: Po instalaci uvidíte dva důležité moduly contrib (pgq &londiste) pod umístěním příspěvku PostgreSQL. V podstatě vám tyto dva příspěvky poskytují funkci replikace londiste.

# 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

Krok 3
Nainstalujte psycopg2, jeho ovladač phyton-postgres, který je nezbytný pro skytools. Někdy tyto ovladače nebudou dodávány s pythonem, takže zde jsou kroky instalace.

# 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

Krok 4.
Předejte vlastnictví Postgresu skytools a umístění instalace postgresu. Tím zajistíte, že všechny soubory/spustitelné soubory budou mít uživatelská oprávnění Postgres.

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

Krok 5.
Nastavte LD_LIBRARY_PATH &PYTHONPATH a spusťte dva nově vytvořené clustery. Můžete je umístit do .bash_profile uživatele postgres jako trvalé řešení.

$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

Krok 6.
Vytvořte dvě databáze, londiste_provider v 5432 a londiste_subscriber v 5433. Vytvořte jednu tabulku s názvem primárního klíče 'ltest' ve dvou databázích a VLOŽTE některá data do tabulky londiste_provider (ltest) a později dokončení nastavení replikace byste měli vidět tyto INSERT data na straně londiste_subscriber.

Možná nebudete potřebovat CRETAE TABLE na podřízené straně, místo toho můžete použít výpis/obnovení struktury pomocí pg_dump/pg_restore, pokud máte mnoho tabulek.

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);

Krok 7.
Vytvořte dva soubory .ini, jeden pro londiste (londiste.ini) a druhý pro PgQ ticker (pgq_ticker.ini). Můžete také najít ukázkové soubory .ini ze základní instalace skytools. Např.:- umístění „/opt/skytools-2.1.12/share/doc/skytools/conf“.

Krok 8.
Vytvořte dva adresáře pro soubory log a PID a nasměrujte je do parametrů londiste.ini a pgq_ticker.ini.

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

Krok 9 .
Spusťte replikaci se soubory .ini, nejprve nainstalujte londiste na poskytovatele a předplatitele a poté spusťte ticker (PgQ) pro replikaci tabulek.

Nainstalujte londiste na poskytovatele a předplatitele pomocí níže uvedených příkazů jeden po druhém:

$ 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

Po přidání spusťte replikaci tabulky.

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

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

Zde dokončete nastavení replikace. Nyní byste měli vidět data tabulky „ltest“ na Slave Side (tj. na portu 5433).

Krok 10.
Nyní pochopíme, co všechno se stalo na pozadí s tabulkou/logy/pids/daty atd., Pojďme se podívat jeden po druhém.

Informace o protokolech:

Struktura tabulky po replikaci:

Stav fronty událostí
Stav replikace lze zkontrolovat pomocí nástroje pgq, jak je uvedeno níže:-

-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
------------------------------------------------------------------------------

Poznámka: S nástroji Londiste &PGQ jsou velmi dobré možnosti pro provádění výzkumu a vývoje.
Doufám, že všichni budete mít úspěšné nastavení replikace Londiste. Napište prosím své komentáře, které si velmi vážíme. Brzy se všichni uvidíme s dalšími příspěvky.


  1. Uložená procedura s volitelnými parametry WHERE

  2. samostatné hodnoty oddělené čárkami a uložení do tabulky na serveru SQL

  3. Jak zkombinovat výsledky dvou dotazů v SQL

  4. Ekvivalent explode() pro práci s řetězci v MySQL