AWS Aurora / Python: подключение только для записи экземпляра - PullRequest
0 голосов
/ 02 июля 2018

У меня есть установка AWS Aurora (Postgres) с основным экземпляром записи и двумя экземплярами чтения реплики. Я подключаю базу данных с помощью Python, как показано ниже.

from sqlalchemy import create_engine
DATABASE_URL = 'postgresql://' + username + ":" + password + "@" + host + ":" + str(port) + "/" + database
engine = create_engine(DATABASE_URL, echo=DEBUG)

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

Мои вопросы здесь таковы: как я всегда могу подключиться к экземпляру записи? Конфигурировать ли я на стороне AWS или внутри кода Python?

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Актуальная проблема. Я перегрузил процессор, и DNS был переконфигурирован. Мне нужно увеличить процессор и с каким-то ограничением контроля.

0 голосов
/ 02 июля 2018

AWS Aurora предоставляет следующие конечные точки , которые вы сможете использовать в значении host в вашем коде:

Конечная точка кластера

Конечная точка кластера является конечной точкой для Aurora DB кластер, который подключается к текущему первичному экземпляру для этой БД кластер. Каждый кластер Aurora DB имеет конечную точку кластера и один основной экземпляр.

Конечная точка считывателя

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

Конечная точка экземпляра

Конечная точка экземпляра является конечной точкой для БД экземпляр в кластере Aurora DB, который подключается к этой конкретной БД пример. Каждый экземпляр БД в кластере БД, независимо от экземпляра тип, имеет свою собственную уникальную конечную точку экземпляра. Итак, есть один экземпляр конечная точка для текущего первичного экземпляра кластера БД, и там одна конечная точка экземпляра для каждой реплики Авроры в БД кластер.

Мне не совсем ясно, какую конечную точку вы используете в данный момент. Часть вашего кода, которая получает значение host, или метод, который вы используете для установки этого значения вручную, является единственной релевантной частью вашего кода, о которой идет речь, и вы ее не включили. Возможно, вы используете конечную точку экземпляра для указания на основной экземпляр, но в случае сбоя этот экземпляр становится репликой чтения, что вызывает вашу проблему.

Вы должны использовать конечную точку кластера, которая гарантирует, что ваши подключения будут идти к основному экземпляру чтения / записи.

...