Antes de iniciar, remova o pare o banco de dados e remova o diretório de dados anterior e recrie-o novamente:
systemctl stop postgresql-9.5
rm -rf /var/lib/pgsql/9.5/data
/usr/pgsql-9.5/bin/postgresql95-setup initdbCaso tenha sido criado o laboratório anterior de warm standby, remova-o também:
systemctl stop standby-9.5
rm -rf /standby
rm -f /usr/lib/systemd/system/standby-9.5.service
systemctl daemon-reloadDesabilite o SELinux, ajustando o arquivo /etc/selinux/config e ajustando o parametro abaixo:
SELINUX=disabledAtenção! Reinicie o servidor para aplicar essa configuração.
Para liberar acesso ao servidor, é necessário aplicar a regra abaixo:
firewall-cmd --add-port=5432/tcp --zone=public --permanentNOTA: A zona
publicpode não ser a padrão, sendo assim, execute o comando abaixo para identificar a zona correta:firewall-cmd --get-active-zones
Edite o arquivo pg_hba.conf disponível no diretório de dados (normalmente em /var/lib/pgsql/9.5/data):
vim /var/lib/pgsql/9.5/data/pg_hba.confAjuste a linha da conexão local, liberando acesso senha ao usuário postgres nas conexões via socket:
local all all trustFaça reload no banco de dados para aplicar as configurações:
systemctl reload postgresql-9.5Abra um terminal psql, conforme abaixo:
psql -U postgres... e ajuste os parâmetros abaixo:
ALTER SYSTEM SET listen_addresses to '*';
ALTER SYSTEM SET wal_level to hot_standby;
ALTER SYSTEM SET wal_keep_segments TO 256;
ALTER SYSTEM SET max_wal_senders TO 3;Para utilizar o pg_rewind, também é necessário ajustar o parâmetro wal_log_hints, conforme abaixo:
ALTER SYSTEM SET wal_log_hints TO on;Saia do psql e reinicie o banco de dados:
systemctl restart postgresql-9.5Em um terminal do psql, rodando com o privilégio de SUPERUSER, execute:
CREATE ROLE replicador PASSWORD 'target' LOGIN REPLICATION;Saia do psql e ajuste o arquivo de configuração pg_hba.conf, normalmente em /var/lib/pgsql/9.5/data/pg_hba.conf, adicionando a seguinte regra:
host replication replicador 10.0.10.5X/32 md5Importante: Lembre de substituir o ip
10.0.10.5Xpelo endereço ip dado pelo instrutor, respectivo ao seu colega.
Com isso, efetue o reload do banco para aplicar as novas regras de conexão:
systemctl reload postgresql-9.5Efetue os comandos abaixo na máquina do colega.
Crie o diretório de dados (PGDATA) para a instância standby, conforme abaixo:
mkdir /standby
chown postgres. /standby/
chmod 700 /standby/Logue com o usuário postgres no sistema operacional:
su - postgresAgora, execute a chamada do pg_basebackup e efetue a cópia do banco master:
/usr/pgsql-9.5/bin/pg_basebackup -U replicador -h 10.0.10.5X --progress --xlog-method=stream --checkpoint=fast -D /standby/pgdata -RImportante: Lembre de substituir o ip
10.0.10.5Xpelo endereço ip dado pelo instrutor, respectivo ao seu colega.
Após a cópia finalizar, ajuste o postgresql.conf, normalmente em /var/lib/pgsql/9.5/data/postgresql.conf, ajustando os seguintes parâmetros:
port = 5555
hot_standby = on
hot_standby_feedback = onImportante: Lembre de descomentar o parametro para que o mesmo tenha efeito.
Copie o serviço existente (postgresql-9.5.service):
cd /usr/lib/systemd/system/
cp postgresql-9.5.service standby-9.5.serviceAgora edite as linhas abaixo:
Environment=PGDATA=/standby/pgdataAtualize o deamon do systemctl e habilite que o servidor inicie automaticamente:
systemctl daemon-reload
systemctl enable standby-9.5Para finalizar, inicie o banco de dados:
systemctl start standby-9.5Para habilitar os replication slots, é necessário abrir um terminal psql e ajustar o seguinte parâmetro:
ALTER SYSTEM SET max_replication_slots to 2;Após o ajuste, reincie o banco de dados para aplicar a nova configuração:
systemctl restart postgresql-9.5Por fim, abra um terminal psql e crie o replication slot:
SELECT * FROM pg_create_physical_replication_slot('lab_tt');Edite o arquivo de configuração recovery.conf, disponivel no diretório de dados (PGDATA) do standby /standby/pgdata/recovery.conf e adicione a linha abaixo:
primary_slot_name = 'lab_tt'Reinie o standby para aplicar a configuração:
systemctl restart standby-9.5Para habilitar os replication slots, é necessário abrir um terminal psql e ajustar o seguinte parâmetro:
ALTER SYSTEM SET synchronous_standby_names to 'maquina_coleguinha';Após o ajuste, faça um reload do banco de dados para aplicar a nova configuração:
systemctl reload postgresql-9.5Edite o arquivo de configuração recovery.conf, disponivel no diretório de dados (PGDATA) do standby /standby/pgdata/recovery.conf e ajuste o parâmetro primary_conninfo adicionando o conteúdo abaixo:
application_name=maquina_coleguinhaA linha em questão, do arquivo
recovery.confvai ficar parecida com:primary_conninfo = 'user=replicador password=target host=10.0.10.5X port=5432 application_name=maquina_coleguinha'Importante: Lembre de substituir o ip
10.0.10.5Xpelo endereço ip dado pelo instrutor, respectivo ao seu próprio servidor.
Reinie o standby para aplicar a configuração:
systemctl restart standby-9.5Execute os comandos abaixo para simular uma carga de dados no servidor master:
createdb -U postgres tt
createdb -U postgres teste
createdb -U postgres gostei
/usr/pgsql-9.5/bin/pgbench -d gostei -U postgres -i
/usr/pgsql-9.5/bin/pgbench -d gostei -U postgres -T 30 -c 10 Importante: Execute essa instrução apenas quando o instrutor passar a solicitar.
Para assumir o servidor standby, execute o comando abaixo com o usuário postgres
/usr/pgsql-9.5/bin/pg_ctl promote /standby/pgdataOutra opção seria adicionar o parâmetro
trigger_fileno arquivorecovery.conf, conforme abaixo:trigger_file = '/tmp/pgsql.failover.trg`E no sistema operacional executar o comando:
touch /tmp/pgsql.failover.trg