Výše je uveden stručný přehled asynchronní replikace Slony-I. Pro více informací je dokumentace Slony-I vaším nejlepším přítelem :).
Začněme metodami replikace, v metodě perltools musíte nakonfigurovat slony v době instalace zdroje, abyste povolili vestavěné skripty perl. Tyto skripty začínají „SLONIK_“ a jsou navrženy k provádění administrativních úloh replikace.
Moje demo pro dvě metody shell(slonik) &Perl je na Localhost Single instance (5432) se dvěma databázemi Master &Slave replikujícími jednu tabulku „rep_table“. Pro replikaci by měl master/Slave mít stejnou strukturu tabulky. Pokud máte mnoho tabulek, použijte volbu výpisu struktury pg_dump/pg_restore. Protože replikuji jednu tabulku, právě jsem vytvořil stejnou na Master/Slave.
Poznámka:Nastavte proměnné prostředí jako PGDATA,PGPORT,PGHOST,PGPASSWORD &PGUSER.
Instalace zdroje:
Stáhněte si zdroj Slony-I 2.1 (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
// Vyloučit --with-perltools, pokud není potřeba
# make
# make nainstalovat
Základní nastavení na Master/Slave
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 "vytvořit tabulku rep_table(id int primární klíč);"
Vložte nějaká data na master, která chcete replikovat na slave
psql -p 5432 -d master - c "insert into rep_table values(generate_series(1,10));"
Metoda 1:–with-perltools :
1. Vytvořte na standardním souboru .conf s informacemi, jako je umístění protokolu, počet uzlů, sada tabulek atd.,
$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 (uzel => 2,hostitel => 'localhost',dbname => 'slave',port => 5433,user => 'postgres',heslo => 'postgres');
$SLONY_SETS =
{
"set1" =>
{
"set_id" => 1,
"table_id" => 1,
"pkeyedtables" =>
[rep_table,],
},
};
Initialize, Create-set &Subscribe-set, to jsou tři fáze slony replikace. Pro každou fázi jsou vytvořeny perl skripty „slonik_“ v umístění uvedeném v době instalace zdroje s volbou „–with-perltools“. V mém případě je to „/opt/PostgreSQL/9.1/bin“. Výše uvedený soubor CONF se používá ve všech fázích.
2. Inicializujte cluster. Tady slonik, křížově kontroluje spojení uzlů.
cd /opt/PostgreSQL/9.1/bin
./slonik_init_cluster -c slon.conf
./slonik_init_cluster -c slon.conf| ./slonik
3. Vytvořte sadu, což znamená, která sada tabulek se má replikovat z uzlu 1 do uzlu 2.
./slonik_create_set -c slon.conf 1
./slonik_create_set -c slon.conf 1|./slonik
4. Spusťte démony Slon. Každý uzel bude mít dva dlouhé procesy pro provádění práce. Každý proces slonu uzlu by měl být spuštěn.
./slon_start -c slon.conf 1
./slon_start -c slon.conf 2
5. Subscribe Set, odtud slony udržuje konzistenci dat mezi dvěma uzly tím, že povolí Master pro všechny DML a zakáže je na Slave.
./slonik_subscribe_set -c slon.conf 1 2
./slonik_subscribe_set -c slon.conf 1 2|./slonik
Po výše uvedených krocích bude mít váš slave replikovaná data.
Metoda 2:Pomocí standardních skriptů:
Ve standardních skriptových metodách existuje mnoho způsobů, jak implementovat, ale abych jasně pochopil, rozdělili jsme se stejně jako Perl, jak jsme to udělali výše, jako je Initialize, create-set &subscribe set. Všechny skripty jsou svázány s příkazem SLONIK.
1. Vytvořte dva soubory .conf pro 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. Inicializujte cluster.
#!/bin/bash
# Inicializace clusteru (init_cluster.sh)
slonik <<_eof_
název clusteru =myrep;
uzel 1 admin conninfo ='host=127.0.0.1 dbname=master user=postgres port=5432';
admin node 2 conninfo='host=127.0.0.1 dbname=slave1 user=postgres port=5432';
#Add Node
init cluster (id =1, komentář ='Primární uzel pro podřízený postgres');
uzel úložiště (id =2, uzel události =1, komentář ='Uzel Slave pro Primární postgres');
#Nastavení cest obchodu ...
echo 'Uložené všechny uzly v katalozích slony';
cesta obchodu (server =1, klient =2 , conninfo='host=127.0.0.1 dbname=master user=postgres port=5432');
cesta obchodu (server =2, klient =1, conninfo='host=127.0.0.1 dbname=slave1 user=postgres port=5432');
_eof_
$./init_cluster.sh
3. Vytvořte sadu.
#!/bin/bash
# Vytvořit sadu pro sadu tabulek (create-set.sh)
slonik <<_eof_
název clusteru =myrep;
admin uzlu 1 conninfo='host=127.0.0.1 dbname=master user=postgres port=5432';
admin node 2 conninfo='host=127.0.0.1 dbname=slave1 user=postgres port=5432';
try { create set (id =1 ,origin =1 , comment ='Set for public'); } při chybě { echo 'Nelze vytvořit sadu1'; exit 1;}
nastavit tabulku přidání (ID sady =1, původ =1, id =1, úplný kvalifikovaný název ='public.rep_table1', komentář ='Akce tabulky s primárním klíčem');
_eof_
$./create-set.sh
4. Chcete-li spustit démony Slon, použijte vlastní skript, který je dodáván se zdrojovým kódem tarbal pod umístěním „/tools“ „start_slon.sh“. Upravte skript změnou umístění souboru .conf pro hlavní/podřízené spouštěcí skripty. Tento skript poskytne flexibilitu k použití a sledování všech slon procesů pomocí PID uvedených v souboru .conf.
Použití:./master_start_slon.sh [start|stop|stav]
-bash-4.1$ ./master_start_slon.sh start
-bash-4.1$ ./slave_start_slon.sh start
Ukázkový výstup STATUS:
-bash-4.1$ ./master_start_slon.sh status
--------------- -------
Slony Config File :/opt/PostgreSQL/9.1/slony_scripts/bash_slony/master_slon.conf
Cesta Slony Bin :/opt/PostgreSQL/9.1/bin
Slony Běžící stav:Běží...
Slony Běží (M)PID:28487
---------------------
4. Sada odběrů.
#!/bin/bash
# Sada odběrů (subscribe-set.sh)
slonik <<_eof_
název clusteru =myrep;
uzel 1 admin conninfo='host=127.0.0.1 dbname=master user=postgres port=5432';
admin node 2 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); } při chybě { exit 1; } echo 'Přihlášené uzly k sadě 1';
_eof_
$./subscribe-set.shNyní bude mít vaše podřízená databáze replikovaná data v tabulce „rep_table“.
Tyto dvě metody vám pomohou pochopit základní nastavení replikace slony. Vrátí se s pokročilejšími koncepty slony.