PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL 9.0 . के साथ लोंडिस्ट प्रतिकृति

लोंडिस्ट, स्काईटूल द्वारा विकसित एसिंक्रोनस मास्टर/स्लेव प्रतिकृति उपकरण। यह बहुत ही सरल और उपयोगकर्ता के अनुकूल स्लोनी की तरह बनाया गया है। लोंडिस्ट या स्लोनी के पीछे मुख्य तर्क रिमोट ट्रिगरिंग है। जबकि लॉन्डिस्ट इवेंट कतारबद्ध मॉडल का अनुसरण करते हैं जो स्लोनी - I में उनका नहीं है।

स्काईटूल का अवलोकन:
Skytools एक पायथन-आधारित एप्लिकेशन है, यह तीन चीजों के बंडल के साथ आता है PgQ,Londiste &Walmgr और इसके लिए Python-Postgres ड्राइवर 'psycopg2' की भी आवश्यकता होती है।

  • PGQ :इसका कतार तंत्र pl/pgsql के साथ बनाया गया है जिसके ऊपर फाईथॉन ढांचा है।
  • Londiste:PgQ का उपयोग इवेंट ट्रांसपोर्टर के रूप में Phyton में लिखा गया एक प्रतिकृति उपकरण।
  • Walmgr :एक WAL संग्रह सेटअप बनाता है।

मैं यहाँ लोंडिस्ट प्रतिकृति डेमॉन प्रक्रिया आदि के बारे में अधिक वर्णन नहीं करने जा रहा हूँ, क्योंकि आप इस लिंक http://skytools.projects.postgresql.org/doc/ में स्काईटूल (PgQ/Londiste/WalMgr) के बारे में सबसे अच्छा ट्यूटोरियल पा सकते हैं।

मूल रूप से, मेरे डेमो में शामिल है कि इंस्टॉलेशन चरणों के साथ PostgreSQL 9.0 के साथ लोंडिस्ट प्रतिकृति के साथ कैसे आगे बढ़ना है। मैं कहता हूं, स्काईटूल दस्तावेज और पोस्टग्रेएसक्यूएल विकी (http://wiki.postgresql.org/wiki/Londiste_Tutorial) लोंडिस्ट प्रतिकृति के साथ खेलने के लिए कुछ भी अधिक है।

डाउनलोड लिंक के साथ पूर्व-आवश्यकताएं :

  • PostgreSQL - PostgreSQL 9.0 http://www.enterprisedb.com/products-services-training/pgdownload
  • स्काईटूल्स - स्काईटूल्स-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

मेरे डेमो में निम्नलिखित शामिल हैं:-

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/

एक टेबल के साथ इसके सरल डेमो के रूप में, मैंने अपने स्थानीय बॉक्स में दो क्लस्टर के साथ आरएचईएल 6 32 बिट/पोस्टग्रेएसक्यूएल 9.0 के साथ प्रयास किया है। आपको वास्तविक आवश्यकताओं के अनुसार इसे बदलना होगा।

नोट: सेटअप के साथ आगे बढ़ने से पहले, मैं याद दिलाना चाहूंगा कि सभी स्रोत इंस्टॉलेशन रूट उपयोगकर्ता के रूप में होने चाहिए और स्थापना के बाद उन निर्देशिकाओं के पास पोस्टग्रेज़ उपयोगकर्ता अनुमतियां होनी चाहिए।

चरण 1.
PostgreSQL 9.0 स्थापित करें और INITDB कमांड के साथ दो क्लस्टर बनाएं और सुनिश्चित करें कि वे 5432 और 5433 प्रत्येक पर चलते हैं। (याद रखें, यह एक पुराना तथ्य है कि INITDB कमांड के साथ pg_log निर्देशिका Data_directory के तहत नहीं बनाई जाएगी, आपको इसे स्पष्ट रूप से बनाने की आवश्यकता है।)

चरण 2.
उपरोक्त लिंक से डाउनलोड करके स्काईटूल इंस्टॉल करें। सभी स्रोतों को एक समान मानक स्थान पर रखना इसका सर्वोत्तम अभ्यास है। मैंने '/ usr/लोकल/src' और '/opt/' के तहत स्काईटूल का इस्तेमाल किया। अब स्काईटूल को 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

नोट: स्थापना के बाद आप PostgreSQL योगदान स्थान के तहत दो महत्वपूर्ण योगदान मॉड्यूल (pgq और 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

चरण 3.
Psycopg2 स्थापित करें, यह एक फाइटोन-पोस्टग्रेस ड्राइवर है जो स्काईटूल के लिए आवश्यक है। कभी-कभी ये ड्राइवर अजगर के साथ नहीं आते हैं, इसलिए यहां इंस्टॉलेशन चरण हैं।

# 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

चरण 4
पोस्टग्रेज का स्वामित्व स्काईटूल को दें और स्थापना स्थान पोस्टग्रेज करें। यह सुनिश्चित करता है कि सभी फ़ाइलें/निष्पादन योग्य पोस्टग्रेज़ उपयोगकर्ता अनुमतियों के साथ हैं।

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

चरण 5.
LD_LIBRARY_PATH और PYTHONPATH सेट करें और दो नए बनाए गए क्लस्टर शुरू करें। आप उन्हें स्थायी समाधान के रूप में पोस्टग्रेज़ उपयोगकर्ता के .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:
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

छठा चरण
दो डेटाबेस बनाएं, 5432 में londiste_provider और 5433 में londiste_subscriber। दो डेटाबेस में प्राथमिक कुंजी नाम 'ltest' के साथ एक तालिका बनाएं और londiste_provider (ltest) तालिका में कुछ डेटा INSERT करें और बाद में प्रतिकृति सेटअप के पूरा होने पर आपको उन INSERT को देखना चाहिए londiste_subscriber पक्ष में डेटा।

आपको दास पक्ष पर CRETAE TABLE की आवश्यकता नहीं हो सकती है, इसके बजाय आप pg_dump/pg_restore का उपयोग करके संरचना डंप/पुनर्स्थापना का उपयोग कर सकते हैं, यदि आपके पास कई टेबल हैं।

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

चरण 7.
दो .ini फ़ाइलें बनाएं एक londiste(londiste.ini) के लिए और दूसरी PgQ टिकर(pgq_ticker.ini) के लिए। आप स्काईटूल की मूल स्थापना से नमूना .ini फ़ाइलें भी प्राप्त कर सकते हैं। जैसे:- “/opt/skytools-2.1.12/share/doc/skytools/conf” लोकेशन।

चरण 8.
लॉग और पीआईडी ​​की फाइलों के लिए दो निर्देशिकाएं बनाएं और उन्हें londiste.ini और pgq_ticker.ini के मापदंडों में इंगित करें।

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

चरण 9 .
.ini फ़ाइलों के साथ प्रतिकृति प्रारंभ करें, पहले प्रदाता और ग्राहक पर londiste स्थापित करें और फिर तालिकाओं की प्रतिकृति के लिए टिकर (PgQ) प्रारंभ करें।

नीचे दिए गए आदेशों के साथ प्रदाता और ग्राहक पर एक-एक करके londiste स्थापित करें:

$ 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

जोड़ने के बाद तालिका की प्रतिकृति शुरू करें।

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

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

यहां प्रतिकृति सेटअप पूरा करें। अब आपको स्लेव साइड (यानी 5433 पोर्ट पर) पर "एलटेस्ट" टेबल डेटा देखना चाहिए।

चरण 10.
अब यह समझते हैं कि टेबल/लॉग्स/पिड्स/डेटा आदि में बैकग्राउंड में क्या होता है, आइए एक-एक करके देखते हैं।

लॉग जानकारी:

प्रतिकृति के बाद तालिका संरचना:

इवेंट कतार स्थिति
प्रतिकृति स्थिति को pgq उपयोगिता के साथ नीचे के रूप में जांचा जा सकता है:-

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

नोट: लोंडिस्ट और पीजीक्यू यूटिलिटीज के पास आर एंड डी करने के लिए बहुत अच्छे विकल्प हैं।
उम्मीद है कि आप सभी के पास एक सफल लोंडिस्ट प्रतिकृति सेटअप होगा। कृपया अपनी टिप्पणियाँ पोस्ट करें जिनकी अत्यधिक सराहना की जाती है। जल्द ही मिलते हैं कुछ और पोस्टिंग के साथ।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं पूरे दिन को डेटाटाइम फ़ील्ड से कैसे मेल करूं?

  2. PostgreSQL में डेटाबेस में टेक्स्ट डेटा लोड करने का कोई तरीका है?

  3. PostgreSQL के लिए pgBouncer का उपयोग करने के लिए एक गाइड

  4. एक सम्मिलित तालिका में एक कॉलम द्वारा धीमी क्वेरी ऑर्डरिंग

  5. Google क्लाउड (GCP) पर PostgreSQL बैकअप संग्रहीत करने के लिए युक्तियाँ