6.4 KiB
Reativação da replicação de banco de dados (Exemplo 01611_pinhais)
Servidor SLAVE
- Acesse o servidor SLAVE e pare o banco de dados.
$ su - postgres
$ ssh -p 61100 [email protected]
$ su - root
# systemctl stop postgresql-11.service
# exit
MUITA ATENÇÃO, tenha certeza que você está executando estes comandos no servidor SLAVE!
-
Apague as pastas da base atual e faça o backup dos configs:
- Limpar tablespaces:
$ cd /var/lib/pgsql/11/tablespaces $ rm -rf arquivo* $ rm -rf expurgo* $ rm -rf indice/*- Limpar pasta bkp:
$ cd /var/lib/pgsql/11/data $ rm -rf bkp*- Fazer backup dos arquivos e limpar pasta data:
$ mkdir bkp $ mv postgresql.conf recovery.conf pg_hba.conf bkp/ $ rm -rf *.tgz $ rm -rf base current_logfiles global pg_commit_ts pg_dynshmem pg_ident.conf pg_logical pg_multixact pg_notify pg_replslot pg_serial pg_snapshots pg_stat pg_stat_tmp pg_subtrans pg_tblspc pg_twophase PG_VERSION pg_xact postgresql.* postmaster.* tablespace_map.* $ rm -rf log/* $ rm -rf archive/* $ mkdir bkp/pg_wal $ mv pg_wal/* bkp/pg_wal/
Servidor MASTER:
Caso a replicação a partir do MASTER não esteja funcionando, e exista algum problema, como sem espaço em disco na partição, ou algum arquivo corrompido, executar os passos abaixo:
(ENTENDER A SITUAÇÃO)
-
Conectar via SSH no servidor MASTER e alterar as configurações:
- Alterar a configuração do postgres.conf para
semreplicacao:
# cp /var/lib/pgsql/11/data/postgresql.semreplicacao /var/lib/pgsql/11/data/postgres.conf- Reiniciar o serviço do postgres:
# systemctl restart postgresql-11.service- Alterar novamente a configuração do postgres para
comreplicacao:
# cp /var/lib/pgsql/11/data/postgresql.comreplicacao /var/lib/pgsql/11/data/postgres.conf- Reiniciar novamente o serviço do postgres:
# systemctl restart postgresql-11.service - Alterar a configuração do postgres.conf para
Caso a replicação esteja corrompida, não utilizar os comandos acima, continuar a partir dos passos abaixo:
- Iniciar o modo Backup do Banco de dados:
- Conectar via ipmadminbd e executar o seguinte comando SQL:
SELECT pg_start_backup('rep01611',true);
Compactar e copiar os arquivos da base do Banco Master para o Banco Slave
-
Você pode abrir vários terminais ssh no servidor MASTER para executar cada comando TAR, ou seja, irá transferir em simultâneo cada pasta para o servidor slave:
- Execute os comandos paara fazer as cópias:
# su - postgres- Acesse a pasta "tablespaces" e compacte os arquivos:
$ cd /var/lib/pgsql/11/tablespaces/ $ tar -zcvf - arquivo/ |ssh -p 61100 [email protected] "cat > /var/lib/pgsql/11/tablespaces/arquivo.tgz" $ tar -zcvf - expurgo/ |ssh -p 61100 [email protected] "cat > /var/lib/pgsql/11/tablespaces/expurgo.tgz"- Acesse a pasta "indice" e compacte os arquivos:
$ cd /var/lib/pgsql/11/tablespaces/indice/ $ tar -zcvf - * |ssh -p 61100 [email protected] "cat > /var/lib/pgsql/11/tablespaces/indice/indice.tgz"- Acesse a pasta "data" e compacte os arquivos:
$ cd /var/lib/pgsql/11/data/ $ tar -zcvf - backup_label current_logfiles global pg_commit_ts pg_dynshmem pg_hba.conf pg_ident.conf pg_logical pg_multixact pg_notify pg_replslot pg_serial pg_snapshots pg_stat pg_stat_tmp pg_subtrans pg_tblspc pg_twophase PG_VERSION pg_xact postgresql.auto.conf postgresql.conf postgresql.mig postgresql.org postgresql.prod postmaster.opts tablespace_map |ssh -p 61100 [email protected] "cat > /var/lib/pgsql/11/data/all.tgz" $ tar -zcvf - base/ |ssh -p 61100 [email protected] "cat > /var/lib/pgsql/11/data/base.tgz"
Servidor SLAVE
-
Descompactar os arquivos tranferidos, você também pode abrir vários terminais SSH para cada comando TAR, descompactando vários arquivos ao mesmo tempo.
- Descompactar arquivos da "tablespaces":
$ ssh [email protected] -p 61100 $ cd /var/lib/pgsql/11/tablespaces/ $ tar -xzvf arquivo.tgz $ tar -xzvf expurgo.tgz- Descompactar arquivos do "indice":
$ cd /var/lib/pgsql/11/tablespaces/indice/ $ tar -xzvf indice.tgz- Descompactar arquivos da "data":
$ cd /var/lib/pgsql/11/data/ $ tar -xzvf all.tgz $ tar -xzvf base.tgz -
Ajustar PG_HBA e PostgreSQL.conf
$ cd bkp/
$ cp postgresql.conf recovery.conf pg_hba.conf ../
- Subir o banco no servidor SLAVE:
$ su - root
# systemctl start postgresql-11.service
- O comando de "start" ficará aguardando a importação de todos os arquivos wal no servidor SLAVE, onde através de outro terminal ssh pode ser acompanhado através dos logs:
# tail -f /var/lib/pgsql/11/data/log/postgresql-2019-09-23_101612.log
-
Quando aparecer a seguinte nomenclatura nos logs do SGBD Slave bzip2: Can't open input file /var/lib/pgsql/11/data/archive/0000000100000C43000000A4: No such file or directory é porque a replicação já esta operando e aguardando um arquivo WAL do servidor Master. Após isso execute o comando do próximo passo para completar o Start do SGBD.
-
Ao concluir a cópia, conectar via ipmadminbd no SERVIDOR MASTER e executar o SQL abaixo: (*executar somente após o banco slave estar ativo e recebendo os arquivos):
SELECT pg_stop_backup();
-
Após o banco estar consistente e recebendo novos arquivos da replicação, deve-se apagar os backups utilizados para transferir a base.
[ : 31755] 2019-12-06 11:37:41 -03 LOG: consistent recovery state reached at F/D3FC1238 [ : 31753] 2019-12-06 11:37:41 -03 LOG: database system is ready to accept read only connections [ : 31755] 2019-12-06 11:37:41 -03 LOG: restored log file "000000010000000F000000D4" from archive- Executar os comandos para apagar os backups:
# rm -rf /var/lib/pgsql/11/data/all.tgz # rm -rf /var/lib/pgsql/11/data/base.tgz # rm -rf /var/lib/pgsql/11/tablespaces/arquivo.tgz # rm -rf /var/lib/pgsql/11/tablespaces/expurgo.tgz # rm -rf /var/lib/pgsql/11/tablespaces/indice/indice.tgz -
Acompanhamento de Logs
-
O alerta "Too Many WAL Files" pode existir na segunda-feira pela manhã já que no final de semana a rotina de VACUUM gera uma grande movimentação no banco.