ऊपर दिखाया गया संक्षेप में स्लोनी-आई एसिंक्रोनस प्रतिकृति के बारे में एक सिंहावलोकन है। अधिक जानकारी के लिए, Slony-I प्रलेखन आपका सबसे अच्छा मित्र है :)।
आइए प्रतिकृति विधियों के साथ शुरू करें, perltools विधि में, आपको अंतर्निहित पर्ल स्क्रिप्ट को सक्षम करने के लिए स्रोत स्थापना के समय slony को कॉन्फ़िगर करने की आवश्यकता है। ये स्क्रिप्ट "SLONIK_" से शुरू होती हैं और इन्हें प्रतिकृति प्रशासनिक कार्यों को करने के लिए डिज़ाइन किया गया है।
दो तरीकों के लिए मेरा डेमो शेल (स्लोनिक) और पर्ल लोकलहोस्ट सिंगल इंस्टेंस (5432) पर है जिसमें दो डेटाबेस मास्टर और स्लेव एक टेबल "rep_table" की नकल करते हैं। प्रतिकृति के लिए, मास्टर/दास को समान तालिका संरचना रखनी चाहिए। यदि आपके पास कई टेबल हैं तो pg_dump/pg_restore संरचना डंप विकल्प का उपयोग करें। चूंकि मैं एक टेबल की नकल कर रहा हूं, मैंने इसे मास्टर/स्लेव पर बनाया है।
नोट:PGDATA, PGPORT, PGHOST, PGPASSWORD और PGUSER जैसे पर्यावरण चर सेट करें।
स्रोत स्थापना:
Download the Slony-I 2.1 source(http://slony.info/downloads/)
#bunzip2 slony1-2.1.0.tar.bz2
#tar -xvf slony1-2.1.0.tar
# cd slony1-2.1.0
#./configure --prefix=/opt/PostgreSQL/9.1/bin
--with-pgconfigdir=/opt/PostgreSQL/9.1/bin
--with-perltools=/opt/PostgreSQL/9.1/bin
// Exclude --with-perltools if not needed
# make
# make install
मास्टर/स्लेव पर बुनियादी सेटअप
createdb -p 5432 master
createdb -p 5432 slave
psql -p 5432 -d master -c "create table rep_table(id int primary key);"
psql -p 5432 -d slave -c "create table rep_table(id int primary key);"
Insert some data on master to replicate to slave
psql -p 5432 -d master -c "insert into rep_table values(generate_series(1,10));"
विधि 1:-साथ-perltools :
1. लॉग लोकेशन, नोड्स की संख्या, टेबल्स का सेट इत्यादि जैसी जानकारी के साथ मानक .conf फ़ाइल बनाएं,
$CLUSTER_NAME = 'myrep';
$LOGDIR = '/opt/PostgreSQL/9.1/slonylogs';
$MASTERNODE = 1;
$DEBUGLEVEL = 2;
&add_node(node => 1,host => 'localhost',dbname => 'master',port => 5432,user => 'postgres',password => 'postgres');
&add_node(node => 2,host => 'localhost',dbname => 'slave',port => 5433,user => 'postgres',password => 'postgres');
$SLONY_SETS =
{
"set1" =>
{
"set_id" => 1,
"table_id" => 1,
"pkeyedtables" =>
[rep_table,],
},
};
इनिशियलाइज़, क्रिएट-सेट और सब्स्क्राइब-सेट, ये स्लोनी प्रतिकृति के तीन चरण हैं। प्रत्येक चरण के लिए, "स्लोनिक_" पर्ल स्क्रिप्ट स्रोत स्थापना के समय उल्लिखित स्थान में "-with-perltools" विकल्प के साथ बनाई गई हैं। मेरे मामले में, "/opt/PostgreSQL/9.1/bin"। उपरोक्त CONF फ़ाइल का उपयोग सभी चरणों में किया जाता है।
2. क्लस्टर प्रारंभ करें। यहाँ स्लोनिक, नोड्स कनेक्शन को क्रॉस-चेक करता है।
cd /opt/PostgreSQL/9.1/bin
./slonik_init_cluster -c slon.conf
./slonik_init_cluster -c slon.conf| ./slonik
3. एक सेट बनाएं, यानी नोड 1 से नोड 2 में दोहराने के लिए टेबल का कौन सा सेट।
./slonik_create_set -c slon.conf 1
./slonik_create_set -c slon.conf 1|./slonik
4. स्लोन डेमॉन शुरू करें। प्रत्येक नोड में कार्य करने के लिए दो स्लोन प्रक्रिया होगी। प्रत्येक नोड स्लोन प्रक्रिया शुरू की जानी चाहिए।
./slon_start -c slon.conf 1
./slon_start -c slon.conf 2
5. सबस्क्राइब सेट, यहां से slony सभी डीएमएल के लिए मास्टर को अनुमति देकर और उन्हें स्लेव पर अस्वीकार करके दो नोड्स के बीच डेटा स्थिरता बनाए रखता है।
./slonik_subscribe_set -c slon.conf 1 2
./slonik_subscribe_set -c slon.conf 1 2|./slonik
उपरोक्त चरणों के बाद अब आपके दास के पास डेटा दोहराया जाएगा।
विधि 2:मानक स्क्रिप्ट के साथ:
मानक स्क्रिप्ट विधियों में, लागू करने के कई तरीके हैं, लेकिन स्पष्ट रूप से समझने के लिए मैंने पर्ल के समान ही विभाजित किया है जैसा हमने ऊपर किया था जैसे प्रारंभ करें, बनाएं-सेट और सदस्यता सेट करें। सभी स्क्रिप्ट SLONIK कमांड से आबद्ध हैं।
1. मास्टर और स्लेव नोड के लिए दो .conf फ़ाइलें बनाएँ।
vi master_slon.conf
cluster_name=myrep
pid_file='/opt/PostgreSQL/9.1/data/master_slon.pid'
conn_info='host=localhost dbname=master user=postgres port=5432'
vi slave_slon.conf
cluster_name=myrep
pid_file='/opt/PostgreSQL/9.1/data/slave_slon.pid'
conn_info='host=localhost dbname=slave1 user=postgres port=5432'
2. क्लस्टर को इनिशियलाइज़ करें।
#!/bin/bash
# Initialize Cluster (init_cluster.sh)
slonik <<_eof_
cluster name = myrep;
node 1 admin conninfo='host=127.0.0.1 dbname=master user=postgres port=5432';
node 2 admin conninfo='host=127.0.0.1 dbname=slave1 user=postgres port=5432';
#Add Node
init cluster (id = 1, comment = 'Primary Node For the Slave postgres');
store node (id = 2, event node = 1, comment = 'Slave Node For The Primary postgres');
#Setting Store Paths ...
echo 'Stored all nodes in the slony catalogs';
store path(server = 1, client = 2, conninfo='host=127.0.0.1 dbname=master user=postgres port=5432');
store path(server = 2, client = 1, conninfo='host=127.0.0.1 dbname=slave1 user=postgres port=5432');
_eof_
$./init_cluster.sh
3. एक सेट बनाएं।
#!/bin/bash
# Create Set for set of tables (create-set.sh)
slonik <<_eof_
cluster name = myrep;
node 1 admin conninfo='host=127.0.0.1 dbname=master user=postgres port=5432';
node 2 admin conninfo='host=127.0.0.1 dbname=slave1 user=postgres port=5432';
try { create set (id = 1 ,origin = 1 , comment = 'Set for public'); } on error { echo 'Could not create set1'; exit 1;}
set add table (set id = 1 , origin = 1, id = 1, full qualified name = 'public.rep_table1', comment = 'Table action with primary key');
_eof_
$./create-set.sh
4. Slon daemons शुरू करने के लिए, कस्टम स्क्रिप्ट का उपयोग करें जो स्रोत tarbal के साथ "/tools" स्थान "start_slon.sh" के अंतर्गत आता है। मास्टर/स्लेव स्टार्टअप स्क्रिप्ट के लिए .conf फ़ाइल स्थान बदलकर स्क्रिप्ट को संशोधित करें। यह स्क्रिप्ट .conf फ़ाइल में उल्लिखित पीआईडी की मदद से सभी स्लोन प्रक्रिया का उपयोग करने और ट्रैक करने के लिए लचीलापन प्रदान करेगी।
Usage: ./master_start_slon.sh [start|stop|status]
-bash-4.1$ ./master_start_slon.sh start
-bash-4.1$ ./slave_start_slon.sh start
Sample STATUS output:
-bash-4.1$ ./master_start_slon.sh status
---------------------
Slony Config File : /opt/PostgreSQL/9.1/slony_scripts/bash_slony/master_slon.conf
Slony Bin Path : /opt/PostgreSQL/9.1/bin
Slony Running Status : Running...
Slony Running (M)PID : 28487
---------------------
4. सदस्यता लें सेट।
#!/bin/bash
# Subscribe Set (subscribe-set.sh)
slonik <<_eof_
cluster name = myrep;
node 1 admin conninfo='host=127.0.0.1 dbname=master user=postgres port=5432';
node 2 admin conninfo='host=127.0.0.1 dbname=slave1 user=postgres port=5432';
try { subscribe set (id = 1, provider = 1 , receiver = 2, forward = yes, omit copy = false); } on error { exit 1; } echo 'Subscribed nodes to set 1';
_eof_
$./subscribe-set.sh
अब आपके स्लेव डेटाबेस में "rep_table" तालिका में डेटा दोहराया जाएगा।
ये दो तरीके स्लोनी प्रतिकृति के मूल सेटअप को समझने में मदद करेंगे। अधिक उन्नत स्लोनी अवधारणाओं के साथ वापस आएंगे।