Replicação entre servidores
Como implantar um replicador "master cego"?
RTREPLICATOR.FAQ-28846
Cenário
Existe uma única instância (sem replicação) e deseja-se replicar para uma outra instância através de um master cego.
Procedimento
- Implantar o master cego em um servidor que será visível pelos demais.
- Na instância ativa, cadastrar os Replication Nodes:
- Cadastrar o Master como sendo cego (M)
- Cadastrar os 2 slaves (M.1 e M.2)
- Exportar os Nodes
- Bloquear qualquer acesso à instância em uso
- Exportar as sequences
- Importar as sequences no MASTER
- Importar os Nodes no MASTER
- Criar sequencia para dml-logs no Master
create sequence seq_dml_logs;
- Configurar o replicador do Master
- Configurar LOG_DML=S
- Garantir que a preferencia SEQUENCE.UTL_SEQUENCE_RANGE.PASSWORD_HASH esteja inicializada. Caso não esteja, basta chamar uma vez a URL UtlSequenceRange?P_SEQUENCE=TESTE&P_RANGE=0. (Deve dar um erro de Access Denied)
- Copiar o valor desta preferencia para a Instancia.
- Reiniciar o TOMCAT do Master
Primeiro Slave
- Acessar a instância por psql
- Limpar os valores das sequences:
update sequences
set next_range_min_value = 0
, next_range_max_value = 0
, next_value = 2
, max_value = 1
where range_size is not null;
- Configurar a instância para ser Slave 1
- Reiniciar o TOMCAT do Slave 1
- Testar o recebimento de sequences
- Testar o envio de DML-LOGs para o Master
Segundo Slave
- Fazer backup do Slave 1
- Restore no servidor do Slave 2
- Acessar a instância por psql
- Limpar os valores das sequences:
update sequences
set next_range_min_value = 0
, next_range_max_value = 0
, next_value = 2
, max_value = 1
where range_size is not null;
- Configurar a instância para ser Slave 2
- Reiniciar o TOMCAT do Slave 2
- Testar o recebimento de sequences
- Testar o envio de DML-LOGs para o Master