2016-08-25 3 views
0

кластер тестирования Postgres-XL с помощью следующей архитектуры я настройки:Насколько прозрачным может быть потерять доступ к datanode Postgres-XL?

  • GTM - vm00
  • coord1 + datanode1 - vm01
  • coord2 + datanode2 - vm02

I создала новую базу данных, которая содержит таблицу, которая распространяется путем репликации. Это означает, что я должен иметь точную копию этой таблицы в каждом отдельном datanode.

Выполнение операций на столе отлично работает, я вижу изменения, реплицированные при подключении ко всем узлам координатора.

Однако, когда я моделировать один из DataNodes идти вниз, в то время как я все еще могу прочитать данные в таблице просто отлично, я не могу добавить или изменить что-либо, и я получаю следующее сообщение об ошибке:

ERROR: Failed to get pooled connections 

Я рассматриваю возможность развертывания Postgres-XL как высокодоступного бэкэнда базы данных для большого количества приложений, и я не могу контролировать, как эти приложения взаимодействуют с базой данных (может быть, большая проблема, если эти приложения не могут писать в базу данных, а один datanode не работает).

Насколько я понимаю, Postgres-XL должен обеспечить высокую доступность реплицированных таблиц очень прозрачным способом и должен поддерживать потерю одного или нескольких datanodes (до тех пор, пока хотя бы один из них по-прежнему доступен), это просто для реплицированных таблиц), но это не выглядит так.

Является ли это предполагаемым поведением? Что можно сделать, чтобы иметь возможность противостоять одному или нескольким datanodes?

+0

По репликации, как описано в этом вопросе. – rasebo

ответ

0

Так получилось, что это не прозрачно. К моему челюсти, удивляющемуся, выясняется, что Postgres-XL не имеет встроенной поддержки или восстановления. Значение, если вы потеряете один узел, сбой базы данных. И если вы используете опции round robbin или hash DISTRIBUTED BY, если вы потеряете диск в узле, вы потеряли всю базу данных. Я не мог в это поверить, но это так.

У них есть опция «stand by» server, которая является зеркальным узлом для каждого вашего узла, но даже для этого требуется вручную настроить его для восстановления и удваивает количество требуемых узлов. Для защиты данных вам придется использовать опцию REPLICATION DISTRIBUTED BY, которая MUCH медленнее и снова не имеет поддержки при сбое, поэтому вам придется вручную перезапустить ее и перенастроить, чтобы не использовать узел с ошибкой.

https://sourceforge.net/p/postgres-xl/mailman/message/32776225/

https://sourceforge.net/p/postgres-xl/mailman/message/35456205/

+1

Да, именно то, что я обнаружил после того, как в прошлом году выкапывал, но забыл обновить этот вопрос с ответом. Спасибо за ответ. – rasebo