O documento discute as melhores práticas para configurar discos e armazenamento para servidores PostgreSQL, incluindo os tipos de discos, controladoras, RAID, sistemas de arquivos e particionamento. Ele fornece exemplos práticos de configurações para diferentes cenários com ênfase no desempenho e disponibilidade.
3. Discos
SATA – Baixo desempenho
SCSI – Substituído pelo SAS
SAS – Armazenamento local
Fibre Channel – Utilizado em storages
SSD – Hot files!
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;
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.
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ãodeobra 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.
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.