Я настраиваю выделенный сервер postgresql на ubuntu, используя 500 ГБ RAID 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
У меня есть сервер 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
По вашим данным, было бы интересно погрузиться в разбиение таблиц, чтобы избежать сканирования огромной таблицы в случае, если вам понадобится небольшая часть данных. Например, я использую многораздельные таблицы для хранения журналов, поэтому у меня есть основная таблица с именем журналы и ежемесячные таблицы, называемые ГГГГММ_логи досталось от мастера. Затем я использую функцию триггера, чтобы поместить каждый журнал в соответствующую секционированную таблицу.