Я использую кластер базы данных Amazon Web Services RDS Aurora 5.6. С этими экземплярами базы данных обращается пара лямбда-выражений, написанных на Python. Теперь все работает нормально, но вдруг, пару дней назад, код python иногда начинает выдавать следующую ошибку:
[ERROR] InterfaceError: 2003: не удается подключиться к серверу MySQL на «CLUSTER-DOMAIN: 3306» (-3 Временный сбой в разрешении имен)
Это происходит примерно в 1 раз на 1000 новых подключений. Что интересно, я не трогал всю эту услугу последние пару дней (с тех пор, как это начало происходить). Все лямбды используют официальный клиент MySQL-коннектора и подключаются при каждой инициализации с помощью следующего фрагмента:
import mysql.connector as mysql
import os
connection = mysql.connect(user=os.environ['DATABASE_USER'],
password=os.environ['DATABASE_PASSWORD'],
database=os.environ['DATABASE_NAME'],
host=os.environ['DATABASE_HOST'],
autocommit=True)
Чтобы исключить, что это проблема клиента Python MySQL, я добавил следующее, чтобы разрешить хост:
import os
import socket
host = socket.gethostbyname(os.environ['DATABASE_HOST'])
Также здесь я иногда получаю следующую ошибку:
[ERROR] gaierror: [Errno -2] Имя или служба неизвестны
Теперь я подозреваю, что это как-то связано с DNS, но поскольку я использую только конечную точку кластера, я мало что могу с этим поделать. Интересно то, что я недавно столкнулся с точно такой же проблемой в другом регионе, с той же настройкой (кластер Aurora 5.6, лямбда-выражения в python, подключающиеся к нему), и там происходит то же самое.
Я попытался перезапустить все машины в кластере, но проблема все еще возникает. Это действительно проблема с DNS? Что я могу сделать, чтобы этого не произошло?