PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Prosta konfiguracja replikacji Slony-I.

Powyżej pokazano w skrócie omówienie replikacji asynchronicznej Slony-I. Aby uzyskać więcej informacji, dokumentacja Slony-I jest Twoim najlepszym przyjacielem :).

Zacznijmy od metod replikacji, w metodzie perltools należy skonfigurować slony w czasie instalacji źródła, aby włączyć wbudowane skrypty perla. Skrypty te zaczynają się od „SLONIK_” i są przeznaczone do wykonywania zadań administracyjnych związanych z replikacją.

Moje demo dla dwóch metod shell(slonik) i Perl jest na Localhost Single instance(5432) z dwiema bazami danych Master i Slave replikujące jedną tabelę „rep_table”. W przypadku replikacji master/slave powinien posiadać taką samą strukturę tabeli. Jeśli masz wiele tabel, użyj opcji zrzutu struktury pg_dump/pg_restore. Ponieważ replikuję jedną tabelę, właśnie stworzyłem ją na Master/Slave.
Uwaga:Ustaw zmienne środowiskowe, takie jak PGDATA,PGPORT,PGHOST,PGPASSWORD i PGUSER.

Instalacja źródłowa:

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

Podstawowa konfiguracja 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 "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));"

Metoda 1:–with-perltools :

1. Utwórz na standardowym pliku .conf, z informacjami takimi jak lokalizacja dziennika, liczba węzłów, zestaw tabel itp.

$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,],
},
};

Zainicjuj, utwórz zestaw i zasubskrybuj zestaw, to są trzy fazy replikacji slony. Dla każdej fazy skrypty perla „slonik_” są tworzone w lokalizacji wymienionej podczas instalacji źródła z opcją „–with-perltools”. W moim przypadku jest to „/opt/PostgreSQL/9.1/bin”. Powyższy plik CONF jest używany we wszystkich fazach.

2. Zainicjuj klaster. Tutaj slonik sprawdza połączenie węzłów.

cd /opt/PostgreSQL/9.1/bin
./slonik_init_cluster -c slon.conf
./slonik_init_cluster -c slon.conf| ./slonik

3. Utwórz zestaw, czyli który zestaw tabel replikować z węzła 1 do węzła 2.

./slonik_create_set -c slon.conf 1 
./slonik_create_set -c slon.conf 1|./slonik

4. Uruchom demony Slon. Każdy węzeł będzie miał dwa procesy slon do wykonania pracy. Każdy proces slon węzła powinien zostać uruchomiony.

./slon_start -c slon.conf 1
./slon_start -c slon.conf 2

5. Zestaw subskrypcji, stąd slony utrzymuje spójność danych między dwoma węzłami, zezwalając Master na wszystkie DML i odrzucając je na Slave.

./slonik_subscribe_set -c slon.conf 1 2 
./slonik_subscribe_set -c slon.conf 1 2|./slonik

Po wykonaniu powyższych kroków teraz twój slave będzie miał zreplikowane dane.

Metoda 2:ze standardowymi skryptami:

W standardowych metodach skryptowych istnieje wiele sposobów implementacji, ale aby jasno zrozumieć, podzieliłem się tak samo jak Perl, który zrobiliśmy powyżej, np. Initialize, create-set &subscribe set. Wszystkie skrypty są powiązane z poleceniem SLONIK.

1. Utwórz dwa pliki .conf dla węzła Master i Slave.

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. Zainicjuj klaster.

#!/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. Stwórz zestaw.

#!/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. Aby uruchomić demony Slon, użyj niestandardowego skryptu, który jest dostarczany wraz z archiwum źródłowym w lokalizacji „/tools” „start_slon.sh”. Zmodyfikuj skrypt, zmieniając lokalizacje plików .conf dla skryptów uruchamiania Master/Slave. Ten skrypt zapewni elastyczność w użyciu i śledzeniu wszystkich procesów slon za pomocą PID wymienionych w pliku .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. Subskrybuj zestaw.

#!/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

Teraz twoja baza danych slave będzie zawierała zreplikowane dane w tabeli „rep_table”.
Te dwie metody pomogą zrozumieć podstawową konfigurację replikacji slony. Wrócimy z bardziej zaawansowanymi koncepcjami slony.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dopasuj frazę kończącą się prefiksem za pomocą wyszukiwania pełnotekstowego

  2. Jak zaokrąglić do najbliższych X minut w PL/pgSQL?

  3. Dołącz do zapytania licznika w generate_series() i pobierz wartości Null jako „0”

  4. Postgres:zdefiniować domyślną wartość dla niepowodzeń CAST?

  5. jak zmienić port nasłuchiwania postgresql w systemie Windows?