Galera Cluster с включенной записью в БД для отключенного узла
У нас есть 5 островов, где у нас есть узлы Galera. На островах часто отключаются интернет. Когда узел отключается, его таблицы блокируются для чтения и записи. Но он синхронизируется и становится доступным, когда интернет возобновляется. В MariaDB Replication доступно чтение и запись для отключенного узла, но это не очень хорошее решение.
Можно ли читать и писать на отключенном узле Galera? Есть ли другое решение для такого сценария?
1 ответ
Возможно, Galera не является правильным решением для очень нестабильной сети.
Если у каждого острова был свой "достаточно" надежный сервер, половина проблемы решена. Получение данных на (и от) других островов должно быть выполнено с помощью кода приложения за схемами.
Схема и схема потока данных должны были бы избегать различных случаев, когда УНИКАЛЬНЫЕ (или ПЕРВИЧНЫЕ) ключи могут создаваться одновременно на отдельных островах. UUID - это одно из решений, но оно плохо работает для огромных баз данных.
Тогда возникает проблема "несвежих" данных. Если сервер на изолированном острове имеет "старые" данные с других островов, может ли пользователь испортить ситуацию, действуя на этих устаревших данных?
Итог: либо работайте над тем, чтобы сделать сеть более надежной, либо стойте на голове, чтобы сделать приложение надежным.
Альтернативы...
Циркуляр с более чем 2 действительно плохо. Любое отключение оставляет остальное в нечетном состоянии - происходит некоторая репликация, а другая нет. И если сервер действительно умирает, то это большой кошмар для ремонта.
Репликация из нескольких источников... Учитывая, что у вас есть небольшие базы данных, и доступ к острову intER доступен только для чтения, это может быть хорошим решением. У вас есть один сервер, который является Slave для всех остальных. То есть, у каждого Острова был бы Мастер, и (когда сеть работает) копировал материал для этого общего Раба. (Один остров с большей вероятностью будет оставаться на связи?)
Все формы репликации / кластеризации возобновляют репликацию и довольно быстро "догоняют" после того, как сеть снова оживает.
Что касается UUIDs
против AUTO_INCREMENT
- Если все записи в какую-либо конкретную таблицу и все связанные таблицы проходят только через сервер одного острова, то я не вижу необходимости в UUID.
(В любом случае, при наличии только 100 МБ / остров, UUID, вероятно, не упадут с обрыва производительности.)