Насколько прозрачной должна быть потеря доступа к датоделе Postgres-XL?

Я настроил тестирующий кластер Postgres-XL со следующей архитектурой:

  • гтм - вм00
  • Координат1+ Датоде1 - VM01
  • Координат2+ Датоде2 - VM02

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

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

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

ERROR:  Failed to get pooled connections

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

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

Это предполагаемое поведение? Что можно сделать, чтобы выдержать отключение одного или нескольких узлов данных?

1 ответ

Решение

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

У них есть опция сервера "stand by", которая представляет собой просто зеркальный узел для каждого вашего узла, но даже это требует ручной настройки для восстановления и удваивает количество нужных вам узлов. Для защиты данных вам нужно будет использовать опцию REPLICATION DISTRIBUTED BY, которая НАМНОГО медленнее и снова не имеет поддержки при отказе, поэтому вам придется вручную перезапустить ее и перенастроить, чтобы не использовать отказавший узел.

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

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

Другие вопросы по тегам