У меня есть приложение Laravel, которое использует 2 PostgreSQL реплик базы данных для чтения данных. Балансировка нагрузки между этими базами данных происходит через вращающийся DNS .
Приложение само использует DNS-имя для доступа к репликам только для чтения. Но во время выполнения запроса я получаю следующую ошибку:
SQLSTATE[40001]: Serialization failure: 7 ERROR: canceling statement due to conflict with recovery
И поэтому во избежание этого стоит повозиться со следующими настройками базы данных на каждой реплике:
max_standby_archive_delay
max_standby_streaming_delay
hot_standby_feedback
Но в случае это не применимо (например, нет доступа к серверу) или как дополнительная мера, как я могу настроить свое приложение laravel для повторного подключения к базе данных и повторного запроса?
Проблема в том, что это должно происходить с этой указанной ошибкой c, а не с другой, также я хочу, чтобы эта стратегия применялась только к этой указанной ошибке c, а не к какой-либо ошибке базы данных на глобальном уровне.
Идея, лежащая в основе моей логики c, заключается в том, что DNS работает в режиме циклического перебора, переподключаясь к другой реплике, я могу получать из него данные и меньше шансов, что мой запрос будет прервана.
У вас есть идея, как это сделать?