
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.