sql >> Databáze >  >> RDS >> PostgreSQL

Jednoduché nastavení replikace Slony-I.

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

Nyní 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.


  1. Výchozí formát DATE společnosti Oracle

  2. MariaDB CURRENT_TIME() Vysvětleno

  3. Provozování clusteru MariaDB Galera bez nástrojů pro orchestraci kontejnerů:Část první

  4. 4 způsoby, jak získat definici pohledu pomocí Transact-SQL