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 initdbDesabilite o SELinux, ajustando o arquivo /etc/selinux/config e ajustando o parametro abaixo:
SELINUX=disabledDefina uma senha para o usuário postgres em ambos os servidores (senha será utilizada em etapas posteriores):
passwd postgresTambém, instale o pacote do utilitário rsysnc e o modulo contrib:
yum install rsync postgresql95-contribLogue com usuário postgres...
su - postgres.. e crie a chave SSH, lembre de preencher os dados com os valores padrão:
ssh-keygen -t rsaImportante: Não utilizar uma senha para a chave criada pode ser uma falha de segurança, assim, evite de compartilhar a chave privada.
Com a chave criada, faça a cópia para a máquina do colega:
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]Importante: Lembre de substituir o ip
10.0.10.5Xpelo endereço ip dado pelo instrutor, respectivo ao seu colega.
Saia do usuário postgres.
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.5Após o reload, conecte ao banco através do utilitário psql...
psql -U postgres... e ajuste os parametros necessários:
ALTER SYSTEM SET wal_level TO 'archive';
ALTER SYSTEM SET archive_mode TO 'on';
ALTER SYSTEM SET archive_command TO 'rsync -a %p [email protected]:/standby/wal/%f';Importante: Lembre de substituir o ip
10.0.10.5Xpelo endereço ip dado pelo instrutor, respectivo ao seu colega.
Para aplicar, é necessário reiniciar o banco, através do comando abaixo:
systemctl restart postgresql-9.5Esta atividade é opcional.
Para testar a geração de WALs, é necessário criar um banco de dados de testes para o pgbench. Crie-o através do comando abaixo:
createdb -U postgres benchCom a base criada, execute o pgbench:
/usr/pgsql-9.5/bin/pgbench -U postgres -d bench -i -s 10Antes de iniciar essa atividade, faça os ajustes no servidor standby.
Logue com o usuário postgres:
su - postgresInicie o backup através do utilitário psql, chamando a função pg_start_backup():
psql -U postgres -c "select pg_start_backup('laboratorio curso pgsql');"Agora que backup foi iniciado, faça a cópia dos arquivos de dados (PGDATA) para servidor standby:
rsync -va --progress --delete /var/lib/pgsql/9.5/data [email protected]:/standby/pgdataImportante: Lembre de substituir o ip
10.0.10.5Xpelo endereço ip dado pelo instrutor, respectivo ao seu colega.
Após a cópia, finalize o backup:
psql -U postgres -c "select pg_stop_backup();"Atividades citadas aqui são feitas na maquina virtual do colega.
Crie o diretório para receber o arquivamento dos arquivos wal do servidor Master, já arrumando as permissões necessárias:
mkdir -p /standby/wal
chown -R postgres. /standby/
cd /standby/pgdata/data/Crie o arquivo recovery.conf com as devidas permissões:
touch recovery.conf
chown postgres. recovery.conf
chmod 600 recovery.conf Edite o arquivo recovery.conf...
vim recovery.conf.. E adicione o conteudo abaixo:
restore_command='/usr/pgsql-9.5/bin/pg_standby -d -t /tmp/pgsql.failover.trg /standby/wal %f %p %r 2>> standby.log'
recovery_end_command='rm -f /tmp/pgsql.failover.trg'Pra finalizar, ajuste a porta padrão no postgresql.conf:
port = 5555Importante: 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/pgdata
ExecStart=/usr/pgsql-9.5/bin/pg_ctl start -D ${PGDATA} -s -WAtualize o deamon do systemctl e habilite que o servidor inicie automaticamente:
systemctl daemon-reload
systemctl enable standby-9.5Acesse o diretório de dados (PGDATA) e edite o arquivo postgresql.conf:
[root@lab51 system]# cd /standby/pgdata/data/
[root@lab51 data]# vim postgresql.confAjuste as linhas abaixo:
port = 5555Importante: Lembre de descomentar a linha.
Para finalizar, inicie o banco de dados:
systemctl start 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 Para assumir o servidor standby, crie o arquivo /tmp/pgsql.failover.trg, conforme abaixo:
touch /tmp/pgsql.failover.trgImportante: Execute essa instrução apenas quando o instrutor passar a solicitar.
Agora, verifique se o servidor standby possui os bancos criados.