适合 Postgresql 服务器的分区

适合 Postgresql 服务器的分区

我正在 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_日志从主服务器继承。然后我使用触发器函数将每个日志放在相应的分区表上。

相关内容