AWS - Что случилось с неисправным Первичным инстансом после его восстановления

Я новичок в AWS Aurora.

При прочтении этого пункта ниже по этой ссылке:

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

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

Я задаю этот вопрос, потому что, по-моему, код сервера, который соединяет кластер Aurora DB, должен указывать конечную точку первичного экземпляра и реплики? Поскольку реплика обслуживает только запрос только для чтения, в коде должны быть исправлены конечные точки после того, как реплика переведена в первичный экземпляр, чтобы выполнить запрос операции записи?

Как мой код узнает, какая конечная точка теперь является первичным экземпляром (т. Е. Может быть выполнен запрос операции записи)?

3 ответа

Решение

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

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

Вы подключаетесь к конечной точке кластера через URL, что-то вроде mydbcluster.cluster-123456789012.us-east-1.rds.amazonaws.com:3306

Таким образом, когда происходит аварийное переключение, вам не нужно вносить какие-либо изменения в свой код, за кулисами в AWS теперь URL будет указывать на реплику чтения, которая теперь продвигается как основной (запись) узел.

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

Существует несколько сценариев сбоя модуля записи, и они обрабатываются по-разному в зависимости от сценария. Отказоустойчивость - один из способов восстановления Авроры после сбоя. Когда происходит аварийное переключение, старый WRITER перезапускается как READER. Для других незначительных сценариев отказа Аврора будет автоматически восстанавливаться без необходимости отработки отказа. Вместо этого возрождается тот же ПИСАТЕЛЬ.

Как мой код узнает, какая конечная точка сейчас является первичной инстанцией

Ваш код должен всегда иметь дело с конечными точками кластера, а не с конечными точками экземпляра. Конечная точка RW кластера всегда будет указывать на мастер, а конечная точка RO кластера будет выполнять циклический перебор DNS через реплики. В любой момент, когда происходит аварийное переключение, ваши клиентские соединения сбрасываются, и они должны пытаться восстановить соединение, используя конечные точки кластера.

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

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