PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Проста настройка за репликация на Slony-I.

По-горе е показан преглед на асинхронната репликация на Slony-I накратко. За повече информация документацията на Slony-I е най-добрият ви приятел :).

Нека започнем с методите за репликация, в метода perltools, трябва да конфигурирате slony по време на инсталацията на източника, за да активирате вградените perl скриптове. Тези скриптове започват със „SLONIK_“ и са предназначени да изпълняват административни задачи за репликация.

Моята демонстрация за два метода shell(slonik) и Perl е на Localhost Single instance(5432) с две бази данни Master &Slave, репликиращи една таблица „rep_table“. За репликация главен/подчинен трябва да съдържа същата структура на таблицата. Ако имате много таблици, използвайте опцията pg_dump/pg_restore за структурно изхвърляне. Тъй като копирам една таблица, току-що създадох същата на Master/Slave.
Забележка:Задайте променливи на средата като PGDATA,PGPORT,PGHOST,PGPASSWORD &PGUSER.

Изходна инсталация:

Изтеглете източника на 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
// Изключете --with-perltools, ако не е необходимо
# make
# make инсталирайте

Основна настройка на главен/подчинен

createdb -p 5432 master
createdb -p 5432 slave

psql -p 5432 -d master -c "създаване на таблица rep_table(id int първичен ключ);"
psql -p 5432 -d slave -c "създаване на таблица rep_table(id int първичен ключ);"

Вмъкнете някои данни на главния, за да се репликират на подчинен
psql -p 5432 -d master - c "вмъкнете в стойности на rep_table(generate_series(1,10));"

Метод 1:–with-perltools :

1. Създайте в стандартен .conf файл с информация като местоположение на регистрационния файл, брой възли, набор от таблици и т.н.,

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

Инициализирайте, Създайте-настройте и се абонирайте, това са трите фази на ленивата репликация. За всяка фаза „slonik_“ perl скриптове се създават на мястото, посочено в момента на инсталиране на източника с опция „–with-perltools“. В моя случай това е „/opt/PostgreSQL/9.1/bin“. Горният CONF файл се използва във всички фази.

2. Инициализирайте клъстера. Тук slonik, кръстосана проверка на връзката на възлите.

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

3. Създайте набор, означава кой набор от таблици да се репликира от възел 1 към възел 2.

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

4. Стартирайте демони Slon. Всеки възел ще има два slon процеса за извършване на работа. Всеки процес на slon на възел трябва да бъде стартиран.

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

5. Subscribe Set, от тук slony поддържа съгласуваност на данните между два възела, като позволява на главния за всички DML и ги отказва на подчинен.

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

След горните стъпки сега вашият подчинен ще има репликирани данни.

Метод 2:Със стандартни скриптове:

В стандартните скриптови методи има много начини за прилагане, но за да разберем ясно, разделих същото като Perl, което направихме по-горе, като Initialize, create-set &subscribe set. Всички скриптове са обвързани с команда SLONIK.

1. Създайте два .conf файла за главен и подчинен възел.

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 потребител=postgres port=5432'

2. Инициализирайте клъстера.

#!/bin/bash
# Инициализиране на клъстер (init_cluster.sh)

slonik <<_eof_
име на клъстер =myrep;
възел 1 администратор 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');

#Настройване на пътеки към магазините ...
echo 'Съхранени всички възли в каталозите на Slony';
пътека на магазина (сървър =1, клиент =2 , conninfo='host=127.0.0.1 dbname=master user=postgres port=5432');
пътека на магазина(сървър =2, клиент =1, conninfo='host=127.0.0.1 dbname=slave1 user=postgres port=5432');
_eof_

$./init_cluster.sh

3. Създайте комплект.

#!/bin/bash
# Създаване на набор за набор от таблици (create-set.sh)

slonik <<_eof_
име на клъстер =myrep;
възел 1 admin conninfo='host=127.0.0.1 dbname=master user=postgres port=5432';
възел 2 admin conninfo='host=127.0.0.1 dbname=slave1 user=postgres port=5432';

опитайте { създайте набор (id =1 , origin =1 , comment ='Настройка за публичен'); } при грешка { echo 'Не може да се създаде set1'; изход 1;}

задаване на таблица за добавяне (задаване на идентификатор =1 , произход =1, идентификатор =1, пълно квалифицирано име ='public.rep_table1', коментар ='Действие на таблица с първичен ключ');
_eof_

$./create-set.sh

4. За да стартирате демони на Slon, използвайте персонализиран скрипт, който идва заедно с изходния tarbal под “/tools” местоположение “start_slon.sh”. Променете скрипта, като промените местоположението на .conf файл за главни/подчинени скриптове за стартиране. Този скрипт ще даде гъвкавост за използване и проследяване на всички slon процеси с помощта на PID, споменат в .conf файла.

Употреба:./master_start_slon.sh [start|stop|status]

-bash-4.1$ ./master_start_slon.sh start
-bash-4.1$ ./slave_start_slon.sh start

Примерен изход СТАТУС:

-bash-4.1$ ./master_start_slon.sh status
-------------- -------
Конфигурационен файл на Slony:/opt/PostgreSQL/9.1/slony_scripts/bash_slony/master_slon.conf
Път на Slony Bin:/opt/PostgreSQL/9.1/bin
Slony Състояние на работа:Работи...
Слони работи (M)PID:28487
---------------------

4. Комплект за абонамент.

#!/bin/bash
# Набор за абонамент (subscribe-set.sh)

slonik <<_eof_
име на клъстер =myrep;
възел 1 admin conninfo='host=127.0.0.1 dbname=master user=postgres port=5432';
възел 2 admin conninfo='host=127.0.0.1 dbname=slave1 user=postgres port=5432';

опитайте { набор за абонамент (идентификатор =1, доставчик =1, получател =2, препращане =да, пропуснете копие =false); } при грешка { изход 1; } echo 'Абонирани възли за задаване 1';
_eof_

$./subscribe-set.sh

Сега вашата подчинена база данни ще има репликирани данни в таблицата “rep_table”.
Тези два метода ще ви помогнат да разберете основната настройка на slony репликация. Ще се завърна с по-усъвършенствани концепции на slon.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изброите всички изгледи в PostgreSQL база данни

  2. Ред на PostgreSQL array_agg

  3. PostgreSQL таблична променлива

  4. Множество генератори на последователности за хибернация за един обект с PostgreSQL

  5. Postgres:Как да конвертирам json низ в текст?