我正在 ubuntu 上设置专用的 postgresql 服务器,使用 500GB RAID 1。我想知道是否有人可以分享一个简单但有效的分区模式供我使用,因为我对这一切都很陌生。
答案1
使用单个大 RAID 进行分区不会给您带来太多的性能优势(但您可以避免因 / 填充而带来的重大麻烦)。
通常,我只会使用操作系统默认值,除非您真的愿意自己调整大小,并且确保您有足够大的空间来创建 PGDATA 目录。下面的操作系统分区建议是我在 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)
回复:Postgres 特定的分区,如果您在单个 RAID-1 上执行此操作,只需使 [PGDATA] 足够大以容纳您的数据库和事务日志,再加上一些增长空间。
如果这是一个生产箱并且您预计有大量的数据库活动,那么您要做的就是将其分离到一堆 RAID-1 上以分离磁盘活动(超高容量您甚至可以考虑将其拆分到控制器之间)。
Oracle 在这方面有很多很棒的白皮书,我强烈建议借鉴他们的设计:它们并不简单,但很有效。我使用的分区方案(每个分区都在自己的磁盘对上)是:
[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
答案2
我有一个 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_日志从主服务器继承。然后我使用触发器函数将每个日志放在相应的分区表上。