Panoramica su Skytools:
Skytools è un'applicazione basata su Python, viene fornita con un pacchetto di tre elementi PgQ, Londiste e Walmgr e richiede anche il driver Python-Postgres 'psycopg2'.
- PGQ:il suo meccanismo di coda costruito con pl/pgsql con sopra il framework phython.
- Londiste:uno strumento di replica scritto in Phyton che utilizza PgQ come trasportatore di eventi.
- Walmgr:crea una configurazione di archiviazione WAL.
Non descriverò molto qui per quanto riguarda il processo del demone di replica londiste ecc., Perché puoi trovare il miglior tutorial su Skytools(PgQ/Londiste/WalMgr) in questo link http://skytools.projects.postgresql.org/doc/.
Fondamentalmente, la mia demo include come procedere con la replica Londiste con PostgreSQL 9.0 insieme ai passaggi di installazione. Dico che la documentazione Skytools e il wiki PostgreSQL (http://wiki.postgresql.org/wiki/Londiste_Tutorial) sono più di qualsiasi altra cosa su cui giocare con la replica Londiste.
Prerequisiti con link per il download :
- 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
La mia demo include quanto segue:-
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/
Come semplice demo con una tabella, ho provato con RHEL 6 32bit/PostgreSQL 9.0 con due cluster nella mia casella locale. Dovresti modificarlo secondo i requisiti effettivi.
Nota: Prima di procedere con l'installazione, vorrei ricordare che tutte le installazioni di origine devono essere come utente root e dopo l'installazione quelle directory dovrebbero possedere i permessi utente di Postgres.
Passaggio 1.
Installa PostgreSQL 9.0 e crea due cluster con il comando INITDB e assicurati che vengano eseguiti su 5432 e 5433 ciascuno. (Ricorda, è un vecchio fatto che con il comando INITDB la directory pg_log non verrà creata in Data_directory è necessario crearla esplicitamente.)
Passaggio 2.
Installa skytools scaricando dal link sopra. È buona norma mantenere tutte le sorgenti in un'unica posizione standard comune. Ho usato '/usr/local/src' e skytools sotto '/opt/'. Ora configura skytools con 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
Nota: Dopo l'installazione vedrai due importanti moduli contrib (pgq e londiste) sotto PostgreSQL contrib location. Fondamentalmente, questi due contributi ti danno la funzionalità della replica 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
Passaggio 3.
Installa psycopg2, è un driver phyton-postgres necessario per skytools. A volte questi driver non vengono forniti con Python, quindi ecco i passaggi di installazione.
# 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
Passaggio 4.
Concedi la proprietà di Postgres a skytools e al luogo di installazione di Postgres. Questo assicura che tutti i file/eseguibili siano con autorizzazioni utente Postgres.
# chown -R postgres:postgres /opt/skytools-2.1.12
# chown -R postgres:postgres /opt/PostgreSQL/9.0/
Passaggio 5.
Imposta LD_LIBRARY_PATH e PYTHONPATH e avvia i due cluster appena creati. Puoi inserirli in .bash_profile dell'utente postgres come soluzione permanente.
$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
Passaggio 6.
Crea due database, londiste_provider in 5432 e londiste_subscriber in 5433. Crea una tabella con il nome della chiave primaria 'ltest' in due database e INSERT alcuni dati nella tabella londiste_provider (ltest) e successivamente al completamento dell'impostazione della replica dovresti vedere quelli INSERT dati nel lato londiste_subscriber.
Potresti non aver bisogno di CRETAE TABLE sul lato slave, invece puoi usare il dump/ripristino della struttura usando pg_dump/pg_restore, se hai molte tabelle.
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);
Passaggio 7.
Crea due file .ini, uno per londiste(londiste.ini) e un altro per PgQ ticker(pgq_ticker.ini). Puoi anche trovare i file .ini di esempio dall'installazione di base di skytools. Es:- Posizione "/opt/skytools-2.1.12/share/doc/skytools/conf".
Passaggio 8.
Crea due directory per i file di log e PID e puntale nei parametri di londiste.ini e pgq_ticker.ini.
$ cd /opt/PostgreSQL/9.0
$ mkdir log pid
Fase 9 .
Avvia la replica con i file .ini, prima installa londiste su provider e abbonato e poi avvia il ticker (PgQ) per la replica delle tabelle.
Installa londiste su provider e abbonato con i seguenti comandi uno per uno:
$ 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
Dopo l'aggiunta avvia la replica della tabella.
-bash-4.1$ ./londiste.py ../ scripts/londiste.ini replay -d
Note: "-d" option is to run the londiste/PgQ daemons in background.
Qui completa la configurazione della replica. Ora dovresti vedere i dati della tabella "ltest" su Slave Side (cioè sulla porta 5433).
Passaggio 10.
Ora vediamo cosa è successo in background a table/logs/pids/data ecc., Vediamo uno per uno.
Informazioni sui registri:
Struttura della tabella dopo la replica:
Stato coda eventi
Lo stato della replica può essere verificato con l'utilità pgq come di seguito:-
-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
------------------------------------------------------------------------------
Nota: Ci sono ottime opzioni con le utilità Londiste e PGQ per svolgere attività di ricerca e sviluppo. Per favore, pubblica i tuoi commenti, quelli sono molto apprezzati. A presto con altri post.