Discos & Cia em PostgreSQL

  • 1,631 views
Uploaded on

Tudo o que você queria saber sobre o uso de discos em servidores PostgreSQL mas tinha vergonha de perguntar

Tudo o que você queria saber sobre o uso de discos em servidores PostgreSQL mas tinha vergonha de perguntar

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,631
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
56
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Tudo que você queria saber sobre o  uso de discos em servidores  PostgreSQL e tinha vergonha de  perguntar por Fábio Telles Rodriguez    
  • 2. Agenda  Discos  Controladoras  Storage  RAID  Sistemas de Arquivo  Particionamento  Exemplos práticos    
  • 3. Discos  SATA – Baixo desempenho  SCSI – Substituído pelo SAS  SAS – Armazenamento local  Fibre Channel – Utilizado em storages   SSD – Hot files!    
  • 4. Discos Capacidade Latência Custo / Custo / Tecnologia (GB) (µs) IOPS IOPS (USD) GB (USD) Cloud Storage Ilimitado 60.000 20 0,015/GB 0,15 / mês HDs de alta capacidade 2.500 12.000 250 1,67 0,15 HDs de alto desempenho 300 7.000 500 1,52 1,30 SSD (escrita) 64 300 5.000 0,20 13 SSD (leitura) 64 45 30.000 0,03 13 DRAM 8 0,005 500.000 0,001 52 Fonte: (Sun) Database performance tuning for SSD based storage    
  • 5. Solid State Disks  RAM:   Storages com memórias RAM conectadas por FC;  Baterias alimentam discos que gravam conteúdo da  RAM em caso de falta de energia;  600.000 IOPS !!!  Flash:  Uso de SLC Flash, algorítimos especiais e outras  técnicas para aumentar a vida útil e desempenho;  100.000 IOPS !!!  Flash + RAM    
  • 6. Controladoras ou melhor: Host Bus Adapter (HBA)  Discos locais:  SATA,  SAS, SCSI  Número de discos suportados  Buffer de leitura e Buffer de escrita  Bateria interna X Bateria externa  Suporte a RAID  Storage:  ISCSI, FC, Infiniband  Uso de fabric  Software p/ load balance e fail over    
  • 7. Storage  Suporte a discos: SATA, SAS, SCSI, FC  Suporte a vários tipos de RAID  Suporte a diversas interfaces: Infiniband, FC, iSCSI  Buffer gerenciável de 2GB a 256GB   Baterias confiáveis  Software para tuning, snapshot, gerencimento, etc  Redundância de controladoras, discos, HBAs,  fontes, baterias, ventoinhas, etc;    
  • 8. RAID Redundant Array of Independent Drives  JBOD (just a bonch of disks)  RAID 0 (strip)  RAID 1 (mirror)  RAID 2, RAID 3, RAID 4  RAID 5 (paridade distribuída)  RAID 6 (paridade dupla distribuída)  RAID 10 (strip + mirror)    
  • 9. RAID 1 300 2x 1X Baixo Discos: 4x 300GB (sem hot spare) Tipo Espaço (GB) Leitura Gravação Risco 5 900 3x 1,5X Médio 6 600 2x 1,5X Baixo 10 600 2x 2x Baixo Discos: 8x 300GB (sem hot spare) Tipo Espaço (GB) Leitura Gravação Risco 5 2100 7x 3x Alto 6 1800 6x 3x Médio 10 1200 4x 4x Baixo    
  • 10. Sisemas de Arquivos  Linux:  EXT2, EXT3, EXT4, XFS, ReiserFS  FreeBSD:   UFS2  Solaris:   UFS2, ZFS  Windows  FAT, NTFS    
  • 11. Sistemas de Arquivos  Desempenho:  Testes c/ pgbench (em linux):  $ pgbench ­i 1000 testedb  $ pgbench ­c 100 ­T 3600  EXT2 >> XFS > EXT4 > EXT3 > ReiserFS  Segurança  EXT4 = EXT3 = XFS > ReixerFS >> EXT2    
  • 12. Particionamento  Porquê separar diferentes tipos de arquivos?  Desempenho;  Segurança;  Facilidade de administração.  Ambientes críticos e com boa mão de obra  dedicada: divisão agressiva;  Ambiente não crítico com mão de obra ocasional:  agrupamento em poucas partições.    
  • 13. Particionamento  SO: /boot, /var, /usr, /home, /tmp, /  swap;  Log de trasação: pg_xlog,  mv /postgres/teste/pg_xlog/ /postgres  ln -s /postgres/pg_xlog /postgres/teste/pg_xlog   Aquivamento (postgresql.conf);  archive_mode = on  archive_command = 'cp "%p" /postgres/archive/"%f"'  archive_timeout = 3600  Logs de erro e monitoramento; http://www.postgresql.org/docs/current/static/runtime­config­logging.html#RUNTIME­CONFIG­LOGGING­WHERE  Backup local;    
  • 14. Particionamento  Tablespaces temporário (postgresql.conf):   temp_tablespaces = '/postgres/temp'  Tablespaces por tipo ou uso (index, data, hist,  OLTP, BI, etc)  mkdir /postgres/data /postgres/index /postgres/old /postgres/rh  CREATE TABLESPACE data LOCATION '/postgres/data';  CREATE TABLESPACE data LOCATION '/postgres/index';  CREATE TABLESPACE data LOCATION '/postgres/old';  CREATE TABLESPACE data OWNER 'hr' LOCATION '/postgres/index'  SET default_tablespace = '/postgres'    
  • 15. Particionamento  O que particionar, o que separar em discos / RAIDs  distintos?  Depende de quantos discos, RAIDs você tem  disponível;  Depende da mão­de­obra disponível;  Depende do perfil da carga da aplicação;  Depende do volume e tipo de dados da aplicação;    
  • 16. Exemplos práticos Caso 1 - Ambiente  Base de 50GB;  Aplicação com 50 usuários, carga mista de OLTP e  relatórios;  Sem DBA dedicado;  Baixo poder de investimento;  Ambiente não crítico;  Discos: 2 discos SAS 300GB.    
  • 17. Exemplos práticos Caso 1 - Sugestão  RAID 1;  /boot (100MB)  / (40GB)  /postgres (dados) (120GB)  /backup (backup) (120GB)  swap (4GB)    
  • 18. Exemplos práticos Caso 2 - Ambiente  Base de 10GB;  Aplicação Web com milhares de acessos  simultâneos;  Administrador de sistema monitora o PostgreSQL  com frequência;  Disponibilidade e desempenho críticos;  Discos: 5 discos SAS 300GB.    
  • 19. Exemplos práticos Caso 2 - Sugestão  1º RAID 1;  /boot (100MB)  / (50GB)   /postgres/pg_xlog  (20GB)  /backup (backup) (200GB)  swap (8GB)  2º RAID 1 + Hot Spare  /postgres/data (300GB)    
  • 20. Exemplos práticos Caso 3 - Ambiente  ERP c/ 250 GB:  OLTP c/ 500 usuários simultâneos;  Relatórios pesados de fechamento mensal;  Cargas em lote diárias;  DBA + Sysadmin;  Disponibilidade + perda de dados + desempenho  críticos;  Discos: 12 discos SAS 300GB.    
  • 21. Exemplos práticos Caso 3 - Sugestão  RAID 1 + hot spare / 15Krpm:  /boot (100MB);  / (20GB);  /var (20GB);  /postgres/pg_xlog (50GB)  swap (8GB)    
  • 22. Exemplos práticos Caso 3 – Sugestão (continuação)  RAID 10 c/ 4 discos (10Krpm):  /postgres/archive (200GB);  /postgres/backup (400GB);  RAID 4 c/ 4 discos + hot spare / 15Krpm:  /postgres/data (600GB);    
  • 23. Exemplos práticos Caso 4 – Ambiente  OLAP + Data Mining (1TB)  Cargas pesadas à noite;  Poucos usuários realizando consultas complexas;  Desempenho crítico;  DBA e Sysadmin c/ nível sênior;  3 discos locais: SAS 300GB 10Krpm  12 discos em storage: FC 146GB 15Krpm   6 discos em storage: SAS 300GB 10Krpm    
  • 24. Exemplos práticos Caso 4 – Sugestão  RAID 1 + Hot Spare ­ local  /boot (100MB)  / (50GB)   /var (50GB)  /postgresql/pg_xlog (200GB) – EXT3 c/ noatime  swap (16GB)    
  • 25. Exemplos práticos Caso 4 – Sugestão (continuação)  RAID 5 c/ 5 discos SAS 10Krpm + hot spare:  /postgresql/data/old (800GB) – XFS  /postgresql/archive (400GB) – EXT3 c/ noatime +  writeback  RAID 0 c/ 3 discos FC 15Krpm ­ Storage:  /postgresql/data/temp (226GB) – EXT2  RAID 10 c/ 8 discos FC15Krpm + hot spare:  /postgresql/data/new (568 GB) – XFS c/ noatime    
  • 26. Obrigado!  Perguntas, Sugestões e cervejas!  Contatos:  telles@timbira.com.br  gtalk/msn/mail: fabio.telles@gmail.com  Skype: fabio_telles  http://www.midstorm.org.br