
Я настраиваю выделенный сервер PostgreSQL на Ubuntu, используя RAID 1 объемом 500 ГБ. Мне интересно, может ли кто-нибудь поделиться простой, но эффективной схемой разбиения на разделы, которую я могу использовать, поскольку я новичок во всем этом.
решение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)
Re: Разбиение на разделы, специфичное для 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
Согласно вашим данным, было бы интересно, если бы вы погрузились в разбиение таблиц, чтобы избежать сканирования огромной таблицы в случае, если вам нужна небольшая часть данных. Например, я использую разбиение таблиц на разделы для хранения журналов, поэтому у меня есть главная таблица, которая называетсяжурналыи ежемесячные таблицы, называемыеГГГГММ_логиунаследовано от мастера. Затем я использую функцию триггера, чтобы поместить каждый журнал в соответствующую секционированную таблицу.