Cloud PostgreSQL em alta performance 15/12/2020 Fábio de Carvalho Vieira Powered
COMPARAÇÃO ● Downtimes/Oscilações no Deploy ● Downtimes/Oscilações ao reiniciar serviço ● Alto risco de falhas ou sobrecarga na VM ● Dificuldade para escalar ● Modular e Flexível ● Deploy e atualizações independentes ● Mais fácil para escalar e manter
DIAGRAMA
ESCOPO PROJETO - CHECKLIST ★ Qual versão utilizar: https://www.postgresql.org/about/featurematrix/ ★ Qual topologia utilizar ? ★ Utilizar Balanceador ? ★ Otimização com PostgresqlTuner ★ Monitoramento
FOCO NA SOLUÇÃO 1. Tuning do banco de dados 2. Otimização das consultas e monitoramento de queries lentas 3. Escalabilidade dos servidores e infra estrutura
TUNING DO BANCO 1. Uso de memória / buffer / cache 2. Principais variáveis para levar em consideração ao tuning: shared_buffer, wal_buffers, effective_cache_size, work_mem, maintenance_work_mem, max_connections, checkpoints_segments, random_page_cost 3. Utilizando o postgresqltuner (https://github.com/jfcoz/postgresqltuner) 4. Tratar resultados e aplicar configurações
OTIMIZAÇÃO DAS CONSULTAS ● Monitorar consultas lentas e re-escrever ou eliminar ● SLOW QUERIES ● Dicas de como analisar queries lentas: https://marmelab.com/blog/2019/02/13/how-to-improve-postgres-perfor mances.html ● Ferramenta auxiliar: http://pgbadger.darold.net
SAVEINCLOUD COM DB ESCALÁVEIS Vantagens ● Escalabilidade Vertical e Horizontal (assinados automaticamente em diferentes hardwares físicos) ● Instalação de ambientes complexos em alguns cliques ● Rede Privada de Alta Performance ● Discos SSD Enterprise com RAID 10 ● Flexibilidade para contratar mais IOPs, os ambientes iniciam com 1000 IOPs ● Backup Full diário sem custos
AUTOMAÇÃO ➔ Opção de replicação master-slave automático ➔ Para Master-Master opções manuais aqui NA PRÁTICA - PostgreSQL ESCALÁVEL
Balancer ➔ HA Proxy ou NGINX Balancer (mais simples) ➔ https://www.pgpool.net (mais robusto) ➔ Automatic Fail Over ➔ Restart containers de DB sem downtime ➔ Escalabilidade
Balancer no JDBC ➔ Separar os bancos por vírgula e os parâmetros desejados, exemplo: ➔ jdbc:postgresql://banco1.saveincloud.com:3433,banco2.saveincloud.com:3433,banco3.saveincloud.com:3433/ac counting? targetServerType=preferSlave&loadBalanceHosts=true targetServerType: any: The JDBC driver connects to any database. / master: The JDBC driver only connects to the primary database. / slave: The JDBC driver only connects to the secondary database. / preferSlave: The JDBC driver connects to the secondary database in priority. If no secondary database is available, the JDBC driver connects to the primary database. loadBalanceHosts: specifies whether to randomly connect to the databases. Valid values: ● False: The databases are connected in the sequence specified in the command. This is the default value. ● True: The databases are randomly connected.
Balancer no libpq ➔ Utilizar a biblioteca https://www.postgresql.org/docs/9.5/libpq.html ➔ Detalhes de implementação abaixo: https://www.postgresql.org/docs/12/libpq-connect.html?spm=a2c6 3.p38356.879954.4.5933696bm4ERNA#LIBPQ-CONNSTRING
Extra ➔ https://bucardo.org/ - Ferramenta com diversas funcionalidades interessantes
BÔNUS
E-MAIL
TOKEN
www.saveincloud.com.br suporte@saveincloud.com OBRIGADO! Powered

Cloud PostgreSQL em alta performance

  • 1.
    Cloud PostgreSQL emalta performance 15/12/2020 Fábio de Carvalho Vieira Powered
  • 2.
    COMPARAÇÃO ● Downtimes/Oscilações noDeploy ● Downtimes/Oscilações ao reiniciar serviço ● Alto risco de falhas ou sobrecarga na VM ● Dificuldade para escalar ● Modular e Flexível ● Deploy e atualizações independentes ● Mais fácil para escalar e manter
  • 3.
  • 4.
    ESCOPO PROJETO -CHECKLIST ★ Qual versão utilizar: https://www.postgresql.org/about/featurematrix/ ★ Qual topologia utilizar ? ★ Utilizar Balanceador ? ★ Otimização com PostgresqlTuner ★ Monitoramento
  • 5.
    FOCO NA SOLUÇÃO 1.Tuning do banco de dados 2. Otimização das consultas e monitoramento de queries lentas 3. Escalabilidade dos servidores e infra estrutura
  • 6.
    TUNING DO BANCO 1.Uso de memória / buffer / cache 2. Principais variáveis para levar em consideração ao tuning: shared_buffer, wal_buffers, effective_cache_size, work_mem, maintenance_work_mem, max_connections, checkpoints_segments, random_page_cost 3. Utilizando o postgresqltuner (https://github.com/jfcoz/postgresqltuner) 4. Tratar resultados e aplicar configurações
  • 7.
    OTIMIZAÇÃO DAS CONSULTAS ●Monitorar consultas lentas e re-escrever ou eliminar ● SLOW QUERIES ● Dicas de como analisar queries lentas: https://marmelab.com/blog/2019/02/13/how-to-improve-postgres-perfor mances.html ● Ferramenta auxiliar: http://pgbadger.darold.net
  • 8.
    SAVEINCLOUD COM DBESCALÁVEIS Vantagens ● Escalabilidade Vertical e Horizontal (assinados automaticamente em diferentes hardwares físicos) ● Instalação de ambientes complexos em alguns cliques ● Rede Privada de Alta Performance ● Discos SSD Enterprise com RAID 10 ● Flexibilidade para contratar mais IOPs, os ambientes iniciam com 1000 IOPs ● Backup Full diário sem custos
  • 9.
    AUTOMAÇÃO ➔ Opção dereplicação master-slave automático ➔ Para Master-Master opções manuais aqui NA PRÁTICA - PostgreSQL ESCALÁVEL
  • 10.
    Balancer ➔ HA Proxyou NGINX Balancer (mais simples) ➔ https://www.pgpool.net (mais robusto) ➔ Automatic Fail Over ➔ Restart containers de DB sem downtime ➔ Escalabilidade
  • 11.
    Balancer no JDBC ➔Separar os bancos por vírgula e os parâmetros desejados, exemplo: ➔ jdbc:postgresql://banco1.saveincloud.com:3433,banco2.saveincloud.com:3433,banco3.saveincloud.com:3433/ac counting? targetServerType=preferSlave&loadBalanceHosts=true targetServerType: any: The JDBC driver connects to any database. / master: The JDBC driver only connects to the primary database. / slave: The JDBC driver only connects to the secondary database. / preferSlave: The JDBC driver connects to the secondary database in priority. If no secondary database is available, the JDBC driver connects to the primary database. loadBalanceHosts: specifies whether to randomly connect to the databases. Valid values: ● False: The databases are connected in the sequence specified in the command. This is the default value. ● True: The databases are randomly connected.
  • 12.
    Balancer no libpq ➔Utilizar a biblioteca https://www.postgresql.org/docs/9.5/libpq.html ➔ Detalhes de implementação abaixo: https://www.postgresql.org/docs/12/libpq-connect.html?spm=a2c6 3.p38356.879954.4.5933696bm4ERNA#LIBPQ-CONNSTRING
  • 13.
    Extra ➔ https://bucardo.org/ -Ferramenta com diversas funcionalidades interessantes
  • 14.
  • 15.
  • 16.
  • 17.