Назад | Перейти на главную страницу

кластер живой сервер Postgres 8.3

Наше веб-приложение получает все больше и больше трафика, из-за чего наш бедный сервер базы данных pg8.3 не справляется с этим. Я изучал использование pgpool II для кластеризации базы данных, чтобы немного уменьшить нагрузку, и мне было интересно, как это сделать, чтобы минимизировать время простоя, учитывая, что я буду кластеризовать живую базу данных.

Кто-нибудь имел опыт работы с этим или знает какие-нибудь руководства, которым нужно следовать? Ура :)

Во-первых, уверены ли вы, что кластеризация - это ответ на вашу проблему с производительностью? Вы учли:

  1. Кеширование. Если у вас есть «общедоступные» страницы, которые активно используются и попадают в базу данных, кэширование внешнего интерфейса очень просто настроить и, вероятно, будет творить чудеса (подумайте, httpd + mod_cache)
  2. Оптимизируйте свое приложение. Я предполагаю, что вы уже знаете, что ваше узкое место - это Postgres. Запустите pgFouine для дневных журналов, найдите самые популярные запросы, проиндексируйте их или постарайтесь избежать их.
  3. Улучшите оборудование на сервере Postgres. Если вы ограничены процессором (редкий случай), возможно, вам поможет лучший процессор или большее количество ядер. Вы всегда можете добавить больше ОЗУ, чтобы кэшировать больше данных (и убедитесь, что вы его используете! Настройки памяти Postgres по умолчанию очень консервативны - это может быть вашей проблемой, убедитесь, что вы используете всю свою оперативную память). Кроме того, достаточно большой массив RAID10 творит чудеса ...

Если вы все равно хотите настроить кластеризацию - а в мире Postgres я склонен думать, что это должно быть больше для целей доступности, чем для производительности - pgpool предоставляет некоторые уловки для репликации баз данных с очень небольшим временем простоя (http://pgpool.projects.postgresql.org/pgpool-II/doc/pgpool-en.html#online-recovery).