По-горе е показан преглед на асинхронната репликация на 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.