Вот сценарий:
Требования:
Результаты до сих пор,
Возможно использовать совместно используемый диск, чтобы хранить данные, как говорится в этом документе. Но это также говорит, что "Другая проблема - то, что резервный сервер никогда не должен получать доступ к совместно используемой памяти, в то время как основной сервер работает". Это означает, что все серверы (кроме основного) оставляют неиспользованными, который почти недопустим для нас.
Так как мы используем совместно используемый диск не должно быть никакой репликации. Было найдено на этом документе, что некоторые конфигурации (Сырые данные и режимы Master/Slave) достаточно хороши. Но другая проблема состоит в том, что они могли бы вызвать вышеупомянутую проблему.
Проблемы:
Отметьте (для тех, кто интересуется заключительными вопросами столько, сколько они могут) - Это произошло прежде со мной. Некоторые говорят, что я ищу основанные на мнении ответы. На самом деле я не. То, что я смотрю, является названием технологии или своего рода ключевых слов, несмотря ни на что. Так, чтобы при помощи их я мог искать для получения дополнительной информации. Это иногда происходит, что необходимо знать некоторые ключевые слова для поиска и нахождения информации.
Заранее спасибо.
Невозможно запустить несколько серверов PostgreSQL из одного и того же каталога данных, даже если все серверы, кроме одного, доступны только для чтения. Абсолютно на 100% не поддерживается. Невозможно. Сдавайтесь сейчас.
Когда-нибудь кто-нибудь может добавить такую возможность, но это повлечет за собой значительные изменения в PostgreSQL, так как Pg в значительной степени полагается на общую память и сигналы для межпроцессной синхронизации. Также, shared_buffers
содержат "грязные" буферы, которые еще не выписываются; они могут выписываться лениво, так как PostgreSQL знает, что все бэкенды будут читаться оттуда и попадут на диск только в том случае, если данные не находятся в shared_buffers
.
Это возможно практично делать с небольшими изменениями в PostgreSQL, если все серверы доступны только для чтения, но я не исследовал это, так как это довольно неинтересный случай использования.
Ссылки на общее хранилище, которые вы видели, являются только для обхода отказа, а не для одновременной работы. В руководстве довольно специфично сказано, что вам необходимо убедиться в наличии соответствующих ограждений для предотвращения одновременного доступа к хранилищу со стороны нескольких серверов БД, и что в противном случае произойдет серьёзное повреждение.
Вам придется полагаться на репликацию или использовать другой движок БД, поддерживающий общее хранилище (и имеющий дело с результирующим влиянием на производительность).
Отдельно: БД часто имеют ограничения по вводу/выводу. Общее хранилище ничего не получит, если у вас теперь есть два сервера, способных работать в 1000tps вместо одного, способного работать в 2000. Или, учитывая накладные расходы на синхронизацию общей системы хранения данных с/на низколатентной шине (думаю, Infiniband/Myrinet), больше похоже на два сервера, способных работать со скоростью 200tps каждый.
.