Replicação entre servidores
Como instalar uma base SLAVE usando um backup de outro SLAVE?
RTREPLICATOR.FAQ-18799
É possível fazer uma nova base SLAVE utilizando um arquivo de backup normal do sistema (que não inclui as tabelas de logs e nem dml_logs) de outro SLAVE. Para tal, o backup existente já deve possuir o NODE do novo SLAVE previamente cadastrado. Para tal, deve-se proceder da seguinte forma:
- Obter o backup mais recente de um slave e baixa-lo no novo slave.
Atenção
Verificar se existem registros de DML_LOGS fora da fila "F". Se houver, esse procedimento não poderá ser realizado.
- Criar o database. Exemplo:
psql -h 127.0.0.1 -U postgres
create database eligo encoding 'UTF8' template = template0;
\q
pg_restore -h 127.0.0.1 -U postgres -v -d eligo slave-20140423-0300.backup
- Acessar o SLAVE por psql e:
- Criar tabelas que não vieram no backup
CREATE TABLE dml_logs
(
id bigint NOT NULL,
date timestamp without time zone NOT NULL,
origin text NOT NULL,
dml text NOT NULL,
dml_parameters text,
queue character varying(1),
original_id bigint NOT NULL,
original_date timestamp without time zone NOT NULL,
error_message text,
origin_table_name character varying(80),
origin_record_id bigint,
CONSTRAINT regra_pk_505355 PRIMARY KEY (id )
);
CREATE INDEX ak_dmllog_data
ON dml_logs
USING btree
(date );
CREATE INDEX ak_dmllog_id
ON dml_logs
USING btree
(original_id );
CREATE INDEX ak_dmllog_origin_record_id
ON dml_logs
USING btree
(origin_record_id );
CREATE INDEX ak_dmllog_original_date
ON dml_logs
USING btree
(original_date );
CREATE INDEX ak_dmllog_queue
ON dml_logs
USING btree
(queue COLLATE pg_catalog."default" );
CREATE INDEX ak_dmllog_queue_id
ON dml_logs
USING btree
(queue COLLATE pg_catalog."default" , id );
CREATE TABLE logs
(
id bigint NOT NULL,
data_hora timestamp without time zone NOT NULL,
endereco_remoto character varying(160),
usuario character varying(40),
usuario_id bigint,
descricao text,
tipo character varying(30),
origem character varying(160),
registro character varying(160),
sessao_id character varying(40),
tempo integer,
CONSTRAINT pk_logs PRIMARY KEY (id )
);
CREATE INDEX ak_logs_data
ON logs
USING btree
(data_hora );
CREATE INDEX ak_logs_journaling
ON logs
USING btree
(origem COLLATE pg_catalog."default" , registro COLLATE pg_catalog."default" , tipo COLLATE pg_catalog."default" );
CREATE INDEX ak_logs_registro
ON logs
USING btree
(registro COLLATE pg_catalog."default" );
CREATE INDEX ak_logs_sessao
ON logs
USING btree
(sessao_id COLLATE pg_catalog."default" );
CREATE INDEX ak_logs_tipo
ON logs
USING btree
(tipo COLLATE pg_catalog."default" );
CREATE INDEX ak_logs_usuario
ON logs
USING btree
(usuario COLLATE pg_catalog."default" );
- Voltar a sequence SEQ_DML_LOGS para 1:
drop sequence SEQ_DML_LOGS;
create sequence SEQ_DML_LOGS;
- Localizar o ID no node que deverá ser utilizado pelo novo SLAVE
select id, global_name from replication_nodes;
- Alterar, os dados da tabela DML_LOGS_CFG, informando o node:
update dml_logs_cfg set node_id=19068;
- Limpar os valores das sequencias
update sequences
set next_range_min_value = null
, next_range_max_value = null
, next_value = 2
, max_value = 1
where range_size is not null;
Caso julgar necessário, inativar todos os Jobs.
update jobs set ativo='N';
Depois destes passos, siga os passos normais de implantação do servidor:
- Configurar a aplicação (config.cfg)
- Garantir o parâmetro de configuração CONFIG.DB.DEFAULT.SEQUENCE_MANAGER=br.com.telescope.sequence.TableSequenceManager
- Fazer o deploy normalmente.
- Rodar UtlDbSchema e ImpOperacoes
- Reiniciar o tomcat.
- Testar
- Copiar arquivos anexos
- Reativar os Jobs que forem necessários
Atenção
Sugere-se que o deploy deve utilizar a versão de Eligo do servidor que tiver a mais recente da rede, OU que a rede seja atualizada para a versão de produção mais recente antes da instalação.