Ovan visas en kort översikt om Slony-I Asynkron replikering. För mer information är Slony-I-dokumentationen din bästa vän :).
Låt oss börja med replikeringsmetoder, i perltools-metoden måste du konfigurera slony vid tidpunkten för källinstallationen för att aktivera inbyggda perl-skript. Dessa skript börjar med "SLONIK_" och de är designade för att utföra replikeringsadministrativa uppgifter.
Min demo för två metoder shell(slonik) &Perl är på Localhost Single instans(5432) med två databaser Master &Slave som replikerar en tabell "rep_table". För replikering bör master/slav ha samma tabellstruktur. Om du har många tabeller använd pg_dump/pg_restore structure dump alternativet. Eftersom jag replikerar en tabell skapade jag precis samma på Master/Slave.
Obs:Ställ in miljövariabler som PGDATA,PGPORT,PGHOST,PGPASSWORD &PGUSER.
Källinstallation:
Ladda ner Slony-I 2.1-källan(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
// Exkludera --with-perltools om det inte behövs
# make
# make installera
Grundläggande inställningar på Master/Slave
createdb -p 5432 master
createdb -p 5432 slave
psql -p 5432 -d master -c "skapa tabell rep_table(id int primärnyckel);"
psql -p 5432 -d slav -c "skapa tabell rep_table(id int primärnyckel);"
Infoga lite data på master för att replikera till slav
psql -p 5432 -d master - c "insert into rep_table values(generate_series(1,10));"
Metod 1:–with-perltools :
1. Skapa en standard .conf-fil, med information som loggplats, antal noder, uppsättning tabeller etc.,
$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',lösenord => 'postgres');
&add_node (nod => 2,host => 'localhost',dbname => 'slav',port => 5433,användare => 'postgres',lösenord => 'postgres');
$SLONY_SETS =
{
"set1" =>
{
"set_id" => 1,
"table_id" => 1,
"pkeyedtables" =>
[rep_table,],
},
};
Initiera, skapa-set &prenumerera-set, dessa är de tre faserna av slarvig replikering. För varje fas skapas "slonik_" perl-skript på den plats som nämns vid källinstallationen med alternativet "–with-perltools". I mitt fall är det "/opt/PostgreSQL/9.1/bin". Ovan CONF-fil används i alla faser.
2. Initiera klustret. Här slonik, korskontrollerar nodernas anslutning.
cd /opt/PostgreSQL/9.1/bin
./slonik_init_cluster -c slon.conf
./slonik_init_cluster -c slon.conf| ./slonik
3. Skapa en uppsättning, betyder vilken uppsättning tabeller som ska replikeras från nod 1 till nod 2.
./slonik_create_set -c slon.conf 1
./slonik_create_set -c slon.conf 1|./slonik
4. Starta Slon-demoner. Varje nod kommer att ha två slon-processer för att utföra arbete. Varje nod-slon-process bör startas.
./slon_start -c slon.conf 1
./slon_start -c slon.conf 2
5. Prenumerera Set, härifrån upprätthåller slony datakonsistens mellan två noder genom att tillåta Master för alla DML:er och neka dem på Slave.
./slonik_subscribe_set -c slon.conf 1 2
./slonik_subscribe_set -c slon.conf 1 2|./slonik
Efter stegen ovan kommer nu din slav att ha replikerad data.
Metod 2:Med standardskript:
I standardskriptmetoder finns det många sätt att implementera, men för att förstå tydligt har jag delat upp samma som Perl vi gjorde ovan som Initialize, create-set &subscribe set. Alla skript är bundna med kommandot SLONIK.
1. Skapa två .conf-filer för Master &Slave Node.
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. Initiera klustret.
#!/bin/bash
# Initialize Cluster (init_cluster.sh)
slonik <<_eof_
cluster name =myrep;
nod 1 admin conninfo ='host=127.0.0.1 dbname=master user=postgres port=5432';
nod 2 admin conninfo='host=127.0.0.1 dbname=slave1 user=postgres port=5432';
#Add Node
init-kluster (id =1, kommentar ='Primärnod för slavpostgres');
butiksnod (id =2, händelsenod =1, kommentar ='Slavnod för The Primary postgres');
#Setting Store Paths ...
echo 'Lagrade alla noder i de slarviga katalogerna';
butikssökväg(server =1, klient =2 , conninfo='host=127.0.0.1 dbname=master user=postgres port=5432');
butikssökväg(server =2, klient =1, conninfo='host=127.0.0.1 dbname=slave1 user=postgres port=5432');
_eof_
$./init_cluster.sh
3. Skapa en uppsättning.
#!/bin/bash
# Skapa uppsättning för uppsättning tabeller (create-set.sh)
slonik <<_eof_
klusternamn =myrep;
nod 1 admin conninfo='host=127.0.0.1 dbname=master user=postgres port=5432';
nod 2 admin conninfo='host=127.0.0.1 dbname=slave1 user=postgres port=5432';
prova { create set (id =1 ,origin =1 , comment ='Set for public'); } på fel { echo 'Kunde inte skapa set1'; exit 1;}
set lägg till tabell (set id =1 , ursprung =1, id =1, fullständigt kvalificerat namn ='public.rep_table1', comment ='Tabellåtgärd med primärnyckel');
_eof_
$./create-set.sh
4. För att starta Slon-demoner, använd ett anpassat skript som kommer tillsammans med källkod under "/tools"-platsen "start_slon.sh". Ändra skriptet genom att ändra .conf-filplatser för Master/slave-startskript. Detta skript kommer att ge flexibilitet att använda och spåra alla slonprocesser med hjälp av PID:er som nämns i .conf-filen.
Användning:./master_start_slon.sh [start|stop|status]
-bash-4.1$ ./master_start_slon.sh start
-bash-4.1$ ./slave_start_slon.sh start
Exempel på STATUS-utgång:
-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 Körstatus :Kör...
Slony Running (M)PID :28487
--------------------------
4. Prenumerera set.
#!/bin/bash
# Prenumerera Set (subscribe-set.sh)
slonik <<_eof_
klusternamn =myrep;
nod 1 admin conninfo='host=127.0.0.1 dbname=master user=postgres port=5432';
nod 2 admin conninfo='host=127.0.0.1 dbname=slave1 user=postgres port=5432';
prova { prenumerera set (id =1, leverantör =1, mottagare =2, vidarebefordra =ja, utelämna kopia =falskt); } vid fel { exit 1; } echo 'Prenumererade noder till set 1';
_eof_
$./subscribe-set.shNu kommer din slavdatabas att ha replikerad data i "rep_table"-tabellen.
Dessa två metoder kommer att hjälpa dig att förstå den grundläggande inställningen av slony replikering. Återkommer med mer avancerade slony-koncept.