我正在使用500GB RAID 1在ubuntu上设置一个专门的postgresql服务器。我想知道是否有人可以共享一个简单而有效的分区模式,因为我对这一切都很陌生。
用一个大的RAID进行分区将不会获得太多的性能好处(尽pipe您将避免重大的麻烦)。
一般情况下,我只会使用操作系统的默认值,除非你真的很舒服自己的尺寸,并确保你有一个大块的空间,你打算创buildPGDATA目录。 下面的操作系统分区build议是我在FreeBSD系统上使用的,对于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")
(Ubuntu可能不会使用/ usr / local,如果没有,你可以将其中的一部分放入/ usr)
Re:Postgres特有的分区,如果你在一个RAID-1上做这个,只需要使[PGDATA]大到足以容纳你的数据库和事务日志,再加上一些增长空间。
如果这是一个生产环境,并且您希望进行大量数据库活动,那么您需要将其分离到一堆RAID-1上,以分离磁盘活动(超高容量,您甚至可以考虑将其分配到控制器)。
甲骨文在这方面有很多很棒的白皮书,我强烈build议他们偷窃他们的devise:他们并不简单,但他们是有效的。 我使用的分区scheme(每个在自己的一对磁盘上)是:
[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
我有一个postgresql服务器与一些有趣的活动之间每秒600-1000事务和我的分区是这样的:
/ - 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
根据你的数据,如果你深入到表分区,将会很有趣,以避免在需要一小部分数据的情况下扫描一个巨大的表。 例如,我使用分区表来存储日志,所以我有一个名为日志的主表和一个名为YYYYMM_logs的从月表inheritance而来的月表。 然后,我使用触发器function将每个日志放在相应的分区表上。