sql >> Databasteknik >  >> RDS >> PostgreSQL

Enkel Slony-I replikeringsinställning.

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

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


  1. Hur man jämför nollvärden i MySQL

  2. Välja slumpmässiga rader med MySQL

  3. Gå med 3 tabeller i SQL

  4. Så här ser du den största avkastningen från din Microsoft Access-databas