Escolar Documentos
Profissional Documentos
Cultura Documentos
com
Curso 801
Administração
PostgreSQL com Alta
Performance
Versão 2015_3.0
Sidymar Ramos Prexedes / sprexedes@hotmail.com
Anotações:
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
Sidymar Ramos Prexedes / sprexedes@hotmail.com
Objetivos da aula:
➢ Usando o pg_ctl
➢ Parada Smart
➢ Parada Fast
➢ Parada Immediate
➢ Uso do kill
Anotações:
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
Sidymar Ramos Prexedes / sprexedes@hotmail.com
IT Experience
Anotações:
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
Sidymar Ramos Prexedes / sprexedes@hotmail.com
Não desejamos parar nossos bancos de dados nunca, mas é claro que várias
situações podem requerer esta tarefa. Um SGBD como o PostgreSQL terá:
Arquivos abertos – centenas ou até milhares de arquivos estão abertos em
disco quando bancos de dados estão transacionando.
Conexões de rede – sockets estão em uso, com clientes locais e/ou remotos
conectados.
Transações estão em andamento – a norma ACID prevê que as coisas
comecem, acontecem e terminem, tudo isso tem um intervalo de tempo.
Semáforos estão alocados – SGBDs multiprocesso utilizam o recurso de
semáforos do sistema operacional para controlar os processos que estão ocupando o
tempo de CPU e a comunicação entre eles.
Memória compartilhada está alocada – o desenho multiprocesso faz com que
uma área de memória esteja alocada para compartilhamento de todos os processos.
Considerando os itens acima, ao parar o cluster todos os recursos devem ser
liberados corretamente, caso contrário, o sistema operacional poderá não funcionar a
contento após uma parada do SGBD por esgotamento de recursos. O cluster pode
até não conseguir mais ser inicializado.
Sidymar Ramos Prexedes / sprexedes@hotmail.com
Modos do PostgreSQL:
● Smart
● Fast
● Immediate
Modos do S.O.
● kill
Utilizando o pg_ctl
Usando o pg_ctl
Não se deve passar a opção -m (modo) quando a intenção for fazer recarga de
arquivos de configuração (reload). Na recarga, não há qualquer indisponibilidade do
cluster, tudo continua funcionando normalmente.
Sidymar Ramos Prexedes / sprexedes@hotmail.com
Usando o pg_ctl
➢Reiniciar o cluster:
pg_ctl -m [modo] -D /dir/cluster restart
➢Recarregar a configuração:
pg_ctl -D /dir/cluster reload
Parada Smart
➢ Aguardará:
●
Finalização de backups
● Finalização de transações
● Encerramento de todas as sessões
Parada smart
Parada Fast
●
Backups em andamento;
● Transações, emitirão rollback;
●
Sessões;
10
Parada fast
Note que uma parada fast, ao enviar o rollback das transações correntes, pode
fazer com que uma aplicação tenha comportamento inesperado se não estiver
preparada para tal. Esteja ciente de que a aplicação foi preparada para tratar esse
caso.
Sidymar Ramos Prexedes / sprexedes@hotmail.com
Parada Immediate
11
Parada immediate
Só deve ser utilizada em último caso. A parada immediate faz tudo o que a
parada fast faz, só que encerra todos os processos abruptamente, sem liberar
corretamente os recursos do sistema operacional. É equivalente a uma falha
catastrófica.
Uso do kill
postgres:
●
SIGTERM – equivale à parada smart
12
Uso do kill
Os sinais de kill devem ser enviados ao processo pai postgres, nunca aos demais.
Caso um sinal de kill inadequado seja enviado a um processo de conexão (backend) todo
o seu cluster poderá falhar catastroficamente por corrupção da memória compartilhada.
O processo postgres é o orquestrador e pai dos demais processos (que são forks
dele), portanto, ele possui rotinas capazes de interpretar os sinais kill. O pg_ctl faz todo
esse trabalho, por isso, prefira utilizá-lo sempre.
Laboratório Dexter
➢ Tarefas:
● Instalar o Postgres na máquina DB Standby 1;
● Configurar link do comando pg_ctl;
●
Gerenciar servidores através do comando pg_ctl;
13
Anotações:
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
Sidymar Ramos Prexedes / sprexedes@hotmail.com
Laboratório Dexter
Executar os comandos na
máquina DB Standby 1
Configurar o repositório:
1 # vim /etc/apt/sources.list
....
deb http://apt.postgresql.org/pub/repos/apt/ jessiepgdg
main
2 # wget https://www.postgresql.org/media/keys/ACCC4CF8.asc
3 # aptkey add ACCC4CF8.asc
4 # aptget update
5 # aptget upgrade
14
Anotações:
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
Sidymar Ramos Prexedes / sprexedes@hotmail.com
Laboratório Dexter
Executar os comandos na
máquina DB Standby 1
Instalar o PostgreSQL:
1 # aptget install postgresql9.4
2 # ls l /usr/lib/postgresql/9.4/bin
3 # whereis pg_dump
4 # whereis pg_dumpall
5 # whereis psql
6 # ls l /etc/postgresql/9.4/main
7 # ls l /var/lib/postgresql/9.4/main
15
Anotações:
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
Sidymar Ramos Prexedes / sprexedes@hotmail.com
Laboratório Dexter
Executar os comandos na
máquina DB Master
2 # su – postgres
3 $ pg_ctl help
16
Anotações:
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
Sidymar Ramos Prexedes / sprexedes@hotmail.com
Laboratório Dexter
Executar os comandos na
máquina DB Master
1 $ pg_ctl stop D /etc/postgresql/9.4/main m smart
2 $ tail f /var/log/postgresql/postgresql9.4main.log
3 $ pg_ctl start D /etc/postgresql/9.4/main
17
Anotações:
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
Sidymar Ramos Prexedes / sprexedes@hotmail.com
Laboratório Dexter
Executar os comandos na
máquina DB Master
1 $ pg_ctl stop D /etc/postgresql/9.4/main m fast
2 $ pg_ctl start D /etc/postgresql/9.4/main
18
Anotações:
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
Sidymar Ramos Prexedes / sprexedes@hotmail.com
Laboratório Dexter
Executar os comandos na
máquina DB Master
19
Anotações:
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
Sidymar Ramos Prexedes / sprexedes@hotmail.com
Laboratório Dexter
Executar os comandos na
máquina DB Master
Uso do comando kill
Force o término do servidor PostgreSQL com kill -15.
$ exit
1
20
Anotações:
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
Sidymar Ramos Prexedes / sprexedes@hotmail.com
Laboratório Dexter
Executar os comandos na
máquina DB Master
Uso do comando kill
Force o término do servidor PostgreSQL com kill -9.
# ps aux | grep postgres
1
21
Anotações:
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
Sidymar Ramos Prexedes / sprexedes@hotmail.com
Laboratório Dexter
22
Anotações:
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
__________________________________________________
Sidymar Ramos Prexedes / sprexedes@hotmail.com
Próximos Passos
Mãos à obra!
23
Sidymar Ramos Prexedes / sprexedes@hotmail.com