Replicação entre servidores > Implantação das bases replicadas
Inclusão de mais um SLAVE (usando os dados de um SLAVE existente)
RTREPLICATOR.RQ-006
Descrição
Uma alternativa facilitada para criar um novo SLAVE em uma rede de replicação.
Fluxo normal
A forma mais simples para criar uma nova base de replicação:
- Acessar um SLAVE existente qualquer que será utilizado como carga inicial
- Cadastrar o novo SLAVE na rede de replicação (Rede de replicação)
- Parar o contexto da aplicação (service stop tomcat ou apenas stop do contexto pelo tomcat manager)
- Backup do SLAVE sem LOGS e sem DML_LOGS:
pg_dump --host 127.0.0.1 --username postgres --format custom --blobs --exclude-table logs --exclude-table dml_logs --file "$filename" $database
- Reiniciar o contexto deste SLAVE (service start tomcat ou start do contexto pelo tomcat manager)
- Criar o banco:
creade database $database encoding 'utf-8' template template0;
- Executar o restore do SLAVE no novo servidor (NÃO INICIAR A APLICAÇÃO)
pg_restore -h 127.0.0.1 -U postgres -d nome_do_banco -v arquivo.backup
- Acessar o BD do SLAVE pelo psql e alterar o node_id do dml_logs_cfg para o novo node, limpar as sequences e criar as tabelas de log e dml_logs:
ATENÇÃO: AJUSTAR O NOME DO NODE ABAIXO:
update dml_logs_cfg
set node_id = (select id from replication_nodes where global_name='M.2');
update sequences
set next_range_min_value = null
, next_range_max_value = null
, next_value = 2
, max_value = 1
where range_size <> null;
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" );