Репликация Slony PostgreSQL - Могу ли я создать индекс для таблицы на ведомом устройстве, которого нет на главном?
Я только что установил репликацию slony между двумя серверами postgres. Один хозяин и один раб. Данные копируются. Мы не хотим использовать это для резервного копирования данных или чего-то еще, но хотим сделать некоторые вычислительные вычисления на ведомом устройстве.
Возможно ли /OK, если бы мы создали индекс для таблицы в ведомой базе данных, которой нет в основной базе данных? Мы не будем добавлять какие-либо данные к ведомому устройству, мы просто хотим, чтобы некоторые подчиненные могли быстрее выполнять определенные запросы.
Будет ли это сломать реплику Slony? Будет ли это кусать нас в задницу позже?
1 ответ
Slony основан на триггерах и обладает широкими возможностями настройки. Да - согласно документации здесь.
Изменения DDL могут быть применены непосредственно к узлу через приложение, такое как psql. Изменения DDL не будут реплицированы Slony-I и поэтому должны применяться вручную к каждому соответствующему узлу. При непосредственном применении изменений DDL необходимо учитывать следующие моменты.
По поводу плюсов / минусов. Наша команда недавно столкнулась с такими же проблемами (решение кластеризации для высокой доступности, IOPS без нагрузки), и после исследования / тестирования некоторых из них мы получили только потоковую репликацию. - Простота в настройке / обслуживании, считывание нагрузки на реликвии.
Многопользовательский режим (Slony не может разделить схемы Postgres по разным узлам), интенсивное использование триггеров в бэкэнде нашего приложения, индексы с расширениями (cube, pg_trgm, cube, earthdistance и частые изменения DDL сделали невозможным использование Slony для нас. Другими словами - вы должны понимать ваше приложение и цели, чтобы выбрать правильное решение.
Для обмена данными - PostgresXL определенно заслуживает внимания. Мы также попробовали это! но это не сработало для нас, так как не поддерживает все типы используемых нами индексов:(