Boa partição para servidor Postgresql

Boa partição para servidor Postgresql

Estou configurando um servidor postgresql dedicado no Ubuntu, usando RAID 1 de 500 GB. Gostaria de saber se alguém poderia compartilhar um esquema de particionamento simples, mas eficaz, que eu possa usar, já que sou muito novo em tudo isso.

Responder1

Você não obterá muitos benefícios de desempenho com o particionamento com um único grande RAID (embora evite grandes dores de cabeça de/enchimento).

Geralmente, eu usaria apenas os padrões do sistema operacional, a menos que você esteja realmente confortável em dimensionar as coisas sozinho e apenas certifique-se de ter um espaço de bom tamanho onde pretende criar o diretório PGDATA. As sugestões de particionamento do sistema operacional abaixo são as que eu uso em sistemas FreeBSD, provavelmente também são boas para o Ubuntu.

 /                    1GB (or larger)
 [SWAP]               2GB or 2*RAM Size
 /var                 10GB
 /usr                 10GB
 /usr/local           15GB
 /tmp                 2GB
 /home                10GB ("Big enough for home directories")
 -------------------------------------------------------------
 (OS Total)           50 GB
 [PGDATA]             Postgres data directory ("The rest")

(O Ubuntu pode não fazer uso de/usr/local, caso contrário, você pode incluir um pouco disso em/usr)


Re: particionamento específico do Postgres, se você estiver fazendo isso em um único RAID-1, basta tornar [PGDATA] grande o suficiente para armazenar seu banco de dados e logs de transações, além de algum espaço de crescimento.

Se esta for uma caixa de produção e você estiver esperando muita atividade de banco de dados, o que você deseja fazer é separá-la em vários RAID-1s para separar a atividade do disco (volume super alto, você pode até considerar dividi-lo entre controladores ).

A Oracle tem muitos whitepapers excelentes sobre isso e eu recomendo fortemente que você roube seus designs: eles não são simples, mas são eficazes. O esquema de particionamento que uso (cada um em seu próprio par de discos) é:

[PGDATA]               5-10GB
[PGDATA]/pg_xlog       5-10GB (More if you expect lots of transaction logs)
[PGDATA]/base          Big enough for your database
[PGDATA]/[Tablespace]  Optional - Separate out "high-traffic" table spaces
[PGDATA]/xlog_archive  Big enough for archived transaction logs & dumps

Responder2

Eu tenho um servidor postgresql com alguma atividade interessante entre 600-1000 transações por segundo e meu particionamento é mais ou menos assim:

/      - 10GB
swap   - 15GB (I have 8GB RAM)
/var   - 20GB
/home  - 60GB (don't ask why, but I think 60gb is too much for home)
pgdata - 100 GB

De acordo com seus dados, seria interessante se você mergulhar no particionamento de tabelas, para evitar a varredura de uma tabela enorme caso precise de uma pequena parte dos dados. Por exemplo, eu uso tabelas particionadas para armazenar logs, então tenho uma tabela mestre chamadaHistóricoe tabelas mensais chamadasAAAAAMM_logsherdado do mestre. Então eu uso uma função de gatilho para colocar cada log na tabela particionada correspondente.

informação relacionada