2 votes

Bonne partition pour le serveur Postgresql

Je suis en train de mettre en place un serveur postgresql dédié sous ubuntu, avec un RAID 1 de 500 Go. Je me demande si quelqu'un pourrait partager un schéma de partitionnement simple, mais efficace, que je peux utiliser, car je suis assez nouveau dans tout cela.

2voto

voretaq7 Points 78924

Vous n'obtiendrez pas beaucoup d'avantages en termes de performances en partitionnant avec un seul gros RAID (mais vous éviterez les problèmes majeurs liés au remplissage).

En général, j'utiliserais les valeurs par défaut du système d'exploitation, à moins que vous ne soyez vraiment à l'aise pour dimensionner les choses vous-même et que vous vous assuriez d'avoir un bon morceau d'espace là où vous avez l'intention de créer le répertoire PGDATA. Les suggestions de partitionnement du système d'exploitation ci-dessous sont celles que j'utilise sur les systèmes FreeBSD, elles sont probablement correctes pour Ubuntu également.

 /                    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")

(Ubuntu peut ne pas utiliser /usr/local, si ce n'est pas le cas, vous pouvez en replier une partie dans /usr).


Re : Partitionnement spécifique à Postgres, si vous faites cela sur un seul RAID-1, il suffit de faire en sorte que [PGDATA] soit suffisamment grand pour contenir votre base de données et les journaux de transactions, plus une certaine marge de progression.

S'il s'agit d'une boîte de production et que vous vous attendez à une forte activité de la base de données, vous devez la répartir sur plusieurs RAID-1 pour séparer l'activité des disques (pour les volumes très importants, vous pouvez même envisager de les répartir sur plusieurs contrôleurs).

Oracle propose de nombreux livres blancs sur ce sujet et je vous recommande vivement de vous inspirer de leurs modèles : Ils ne sont pas simples, mais ils sont efficaces. Le schéma de partitionnement que j'utilise (chacun sur sa propre paire de disques) est le suivant :

[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

0voto

Sam Points 37

J'ai un serveur postgresql avec une activité intéressante entre 600-1000 transactions par seconde et mon partitionnement est quelque chose comme ceci :

/      - 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

En fonction de vos données, il serait intéressant que vous vous plongiez dans le partitionnement de table, pour éviter de scanner une énorme table dans le cas où vous avez besoin d'une petite partie des données. Par exemple, j'utilise des tables partitionnées pour stocker les logs, j'ai donc une table principale appelée journaux et des tableaux mensuels appelés YYYYMM_logs hérité du maître. J'utilise ensuite une fonction trigger pour placer chaque log sur la table partitionnée correspondante.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X