Перезагрузка AWS RDS Аврора мастер / писатель также перезагружает читателей? - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь оценить AWS RDS Aurora как будущую замену для наших локальных баз данных MySQL, но я замечаю некоторые странные поведения.

У меня есть базовый кластер с мастером БД (писатель) и реплика (читатель). Моя идея состояла в том, чтобы использовать читателя как всегда доступный источник данных, даже когда писатель недоступен. Но когда я перезагружаю мастер, он отключает и ридер, делая настройку совершенно бесполезной.

Глядя на журнал реплик читателя, вот что происходит, когда он замечает, что писатель не работает:

enter image description here

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

Или запись / чтение «вне синхронизации» всегда смещает точки входа считывателя независимо от размера кластера?

1 Ответ

0 голосов
/ 10 мая 2018

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

Репликация Aurora очень отличается от репликации MySQL (или Galera). Потеря главного устройства обязательно вызывает реорганизацию кластера, поскольку отдельные экземпляры не имеют своих собственных копий данных, они совместно используют 6-ти реплицированный том хранения - так репликация может оставаться в течение 10-20 мс временной интервал. На самом деле реплицируется с мастера LSN журнала транзакций. Для замены мастера требуется продвижение одной реплики, проверка чистоты структур данных на диске после вступления во владение, а затем все остальные реплики начинают следовать за ней.

Если кластер БД имеет одну или несколько реплик Aurora, то реплика Aurora повышается до основного экземпляра во время события сбоя. Событие сбоя приводит к кратковременному прерыванию, во время которого операции чтения и записи завершаются с ошибкой.

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Managing.html#Aurora.Managing.FaultTolerance

Когда реплика Aurora перестает видеть обновления от мастера, не имеет значения, где находится фактическая ошибка - будь то с настоящим мастером или в другом месте инфраструктуры - реплика перестает обслуживать запросы, потому что, в лучшем случае, нет больше не имеет доступа к достоверным данным.

Где возможно, исправление нулевого времени простоя появляется, чтобы избежать перезапуска мастера во время обновлений. Кроме обновлений не должно быть необходимости перезапускать мастер.

...