PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Configuração simples da replicação do Slony-I.


Acima, é mostrada uma visão geral sobre a replicação assíncrona do Slony-I em resumo. Para mais informações, a documentação do Slony-I é sua melhor amiga :).

Vamos começar com os métodos de replicação, no método perltools, você precisa configurar o slony no momento da instalação do código-fonte para habilitar scripts perl integrados. Esses scripts começam com “SLONIK_” e são projetados para realizar tarefas administrativas de replicação.

Minha demonstração para dois métodos shell(slonik) &Perl está em Localhost Single instance(5432) com dois bancos de dados Master &Slave replicando uma tabela “rep_table”. Para replicação, mestre/escravo deve manter a mesma estrutura de tabela. Se você tiver muitas tabelas, use a opção de dump de estrutura pg_dump/pg_restore. Como estou replicando uma tabela, acabei de criar a mesma no Master/Slave.
Nota:Defina variáveis ​​de ambiente como PGDATA,PGPORT,PGHOST,PGPASSWORD &PGUSER.

Instalação de origem:
Baixe a fonte do 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
// Excluir --with-perltools se não for necessário
# make
# make instalar

Configuração básica no mestre/escravo
createdb -p 5432 master
createdb -p 5432 slave

psql -p 5432 -d master -c "criar tabela rep_table(id int chave primária);"
psql -p 5432 -d slave -c "criar tabela rep_table(id int chave primária);"

Inserir alguns dados no mestre para replicar para o escravo
psql -p 5432 -d master - c "inserir em valores rep_table(generate_series(1,10));"

Método 1:–with-perltools :

1. Crie no arquivo .conf padrão, com informações como, localização do log, número de nós, conjunto de tabelas etc.,
$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,],
},
};

Inicializar, criar e assinar, essas são as três fases da replicação slony. Para cada fase, são criados scripts perl “slonik_” no local mencionado no momento da instalação do código-fonte com a opção “–with-perltools”. No meu caso é “/opt/PostgreSQL/9.1/bin”. O arquivo CONF acima é usado em todas as fases.

2. Inicialize o cluster. Aqui slonik, verifica a conexão dos nós.
cd /opt/PostgreSQL/9.1/bin
./slonik_init_cluster -c slon.conf
./slonik_init_cluster -c slon.conf| ./slonik

3. Criar um conjunto, significa qual conjunto de tabelas replicar do Nó 1 para o Nó 2.
./slonik_create_set -c slon.conf 1 
./slonik_create_set -c slon.conf 1|./slonik

4. Inicie os daemons do Slon. Cada nó terá dois processos slon para realizar o trabalho. Cada processo de slon de nó deve ser iniciado.
./slon_start -c slon.conf 1
./slon_start -c slon.conf 2

5. Subscribe Set, daqui o slony mantém a consistência dos dados entre dois nós, permitindo Master para todos os DMLs e negando-os no Slave.
./slonik_subscribe_set -c slon.conf 1 2 
./slonik_subscribe_set -c slon.conf 1 2|./slonik

Após os passos acima agora seu slave terá dados replicados.

Método 2:com scripts padrão:

Nos métodos de script padrão, há muitas maneiras de implementar, mas para entender claramente eu dividi da mesma forma que Perl fizemos acima, como Initialize, create-set &subscribe set. Todos os scripts são vinculados ao comando SLONIK.

1. Crie dois arquivos .conf para o nó mestre e escravo.
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. Inicialize o cluster.
#!/bin/bash
# Inicializar cluster (init_cluster.sh)

slonik <<_eof_
nome do cluster =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 'Armazenou todos os nós nos catálogos slony';
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. Crie um conjunto.
#!/bin/bash
# Criar conjunto para conjunto de tabelas (create-set.sh)

slonik <<_eof_
nome do cluster =myrep;
no 1 admin conninfo='host=127.0.0.1 dbname=master user=postgres port=5432';
nodo 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 'Não foi possível criar set1'; exit 1;}

set add table (set id =1 , origin =1, id =1, full qualificado name ='public.rep_table1', comment ='Table action with primary key');
_eof_

$./create-set.sh

4. Para iniciar os daemons do Slon, use o script customizado que vem junto com o tarbal de origem em “/tools” local “start_slon.sh”. Modifique o script alterando os locais dos arquivos .conf para scripts de inicialização mestre/escravo. Este script dará flexibilidade para usar e rastrear todo o processo do slon com a ajuda dos PID's mencionados no arquivo .conf.
Uso:./master_start_slon.sh [start|stop|status]

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

Saída de STATUS de amostra:

-bash-4.1$ ./master_start_slon.sh status
---------- -------
Arquivo de configuração do Slony:/opt/PostgreSQL/9.1/slony_scripts/bash_slony/master_slon.conf
Slony Bin Path:/opt/PostgreSQL/9.1/bin
Slony Status de execução:Em execução...
Slony Running (M)PID:28487
---------------------

4. Assine o conjunto.
#!/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';

tente { subscribe set (id =1, provider =1 , receiver =2, forward =yes, omit copy =false); } no erro { saída 1; } echo 'Nós inscritos para definir 1';
_eof_

$./subscribe-set.sh

Agora seu banco de dados escravo terá dados replicados na tabela “rep_table”.
Esses dois métodos ajudarão a entender a configuração básica da replicação slony. Estará de volta com conceitos slony mais avançados.