Несколько Серверов Пост-ГРЭС (одно устройство записи, несколько читатель) с Совместно используемым диском

Вот сценарий:

  1. Один диск черепка (Gluster)
  2. Несколько серверов Пост-ГРЭС

Требования:

  1. Используйте совместно используемый диск, чтобы хранить файлы базы данных
  2. Используйте конфигурацию, которые обеспечивают максимальную производительность

Результаты до сих пор,

  1. Возможно использовать совместно используемый диск, чтобы хранить данные, как говорится в этом документе. Но это также говорит, что "Другая проблема - то, что резервный сервер никогда не должен получать доступ к совместно используемой памяти, в то время как основной сервер работает". Это означает, что все серверы (кроме основного) оставляют неиспользованными, который почти недопустим для нас.

  2. Так как мы используем совместно используемый диск не должно быть никакой репликации. Было найдено на этом документе, что некоторые конфигурации (Сырые данные и режимы Master/Slave) достаточно хороши. Но другая проблема состоит в том, что они могли бы вызвать вышеупомянутую проблему.

Проблемы:

  1. Существует много документации относительно сети, которая сделала меня смущенным их требованиями и функциями. Мое понимание корректно?
  2. Если так, есть ли любая возможность достигнуть этого дизайна (с pgpool или anyother инструментами)
  3. Если так, назовите инструменты и или ключевые слова, таким образом, я могу найти больше информации.

Отметьте (для тех, кто интересуется заключительными вопросами столько, сколько они могут) - Это произошло прежде со мной. Некоторые говорят, что я ищу основанные на мнении ответы. На самом деле я не. То, что я смотрю, является названием технологии или своего рода ключевых слов, несмотря ни на что. Так, чтобы при помощи их я мог искать для получения дополнительной информации. Это иногда происходит, что необходимо знать некоторые ключевые слова для поиска и нахождения информации.

Заранее спасибо.

5
задан 14 August 2014 в 07:38
1 ответ

Невозможно запустить несколько серверов PostgreSQL из одного и того же каталога данных, даже если все серверы, кроме одного, доступны только для чтения. Абсолютно на 100% не поддерживается. Невозможно. Сдавайтесь сейчас.

Когда-нибудь кто-нибудь может добавить такую возможность, но это повлечет за собой значительные изменения в PostgreSQL, так как Pg в значительной степени полагается на общую память и сигналы для межпроцессной синхронизации. Также, shared_buffers содержат "грязные" буферы, которые еще не выписываются; они могут выписываться лениво, так как PostgreSQL знает, что все бэкенды будут читаться оттуда и попадут на диск только в том случае, если данные не находятся в shared_buffers.

Это возможно практично делать с небольшими изменениями в PostgreSQL, если все серверы доступны только для чтения, но я не исследовал это, так как это довольно неинтересный случай использования.

Ссылки на общее хранилище, которые вы видели, являются только для обхода отказа, а не для одновременной работы. В руководстве довольно специфично сказано, что вам необходимо убедиться в наличии соответствующих ограждений для предотвращения одновременного доступа к хранилищу со стороны нескольких серверов БД, и что в противном случае произойдет серьёзное повреждение.

Вам придется полагаться на репликацию или использовать другой движок БД, поддерживающий общее хранилище (и имеющий дело с результирующим влиянием на производительность).

Отдельно: БД часто имеют ограничения по вводу/выводу. Общее хранилище ничего не получит, если у вас теперь есть два сервера, способных работать в 1000tps вместо одного, способного работать в 2000. Или, учитывая накладные расходы на синхронизацию общей системы хранения данных с/на низколатентной шине (думаю, Infiniband/Myrinet), больше похоже на два сервера, способных работать со скоростью 200tps каждый.

.
7
ответ дан 3 December 2019 в 01:24

Теги

Похожие вопросы