Galera Cluster с включенной записью в БД для отключенного узла

У нас есть 5 островов, где у нас есть узлы Galera. На островах часто отключаются интернет. Когда узел отключается, его таблицы блокируются для чтения и записи. Но он синхронизируется и становится доступным, когда интернет возобновляется. В MariaDB Replication доступно чтение и запись для отключенного узла, но это не очень хорошее решение.

Можно ли читать и писать на отключенном узле Galera? Есть ли другое решение для такого сценария?

1 ответ

Возможно, Galera не является правильным решением для очень нестабильной сети.

Если у каждого острова был свой "достаточно" надежный сервер, половина проблемы решена. Получение данных на (и от) других островов должно быть выполнено с помощью кода приложения за схемами.

Схема и схема потока данных должны были бы избегать различных случаев, когда УНИКАЛЬНЫЕ (или ПЕРВИЧНЫЕ) ключи могут создаваться одновременно на отдельных островах. UUID - это одно из решений, но оно плохо работает для огромных баз данных.

Тогда возникает проблема "несвежих" данных. Если сервер на изолированном острове имеет "старые" данные с других островов, может ли пользователь испортить ситуацию, действуя на этих устаревших данных?

Итог: либо работайте над тем, чтобы сделать сеть более надежной, либо стойте на голове, чтобы сделать приложение надежным.

Альтернативы...

Циркуляр с более чем 2 действительно плохо. Любое отключение оставляет остальное в нечетном состоянии - происходит некоторая репликация, а другая нет. И если сервер действительно умирает, то это большой кошмар для ремонта.

Репликация из нескольких источников... Учитывая, что у вас есть небольшие базы данных, и доступ к острову intER доступен только для чтения, это может быть хорошим решением. У вас есть один сервер, который является Slave для всех остальных. То есть, у каждого Острова был бы Мастер, и (когда сеть работает) копировал материал для этого общего Раба. (Один остров с большей вероятностью будет оставаться на связи?)

Все формы репликации / кластеризации возобновляют репликацию и довольно быстро "догоняют" после того, как сеть снова оживает.

Что касается UUIDs против AUTO_INCREMENT - Если все записи в какую-либо конкретную таблицу и все связанные таблицы проходят только через сервер одного острова, то я не вижу необходимости в UUID.

(В любом случае, при наличии только 100 МБ / остров, UUID, вероятно, не упадут с обрыва производительности.)

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