У меня есть приложение под управлением MariaDB, использующее Aurora RDS MySQL в качестве источника данных.
В моем application.properties
у меня есть:
spring.datasource.url=jdbc:mariadb:aurora://****.cluster***.rds.amazonaws.com:3306,****.cluster-ro***.rds.amazonaws.com:3306/db
Периодически я вижу эту ошибку:
Caused by: java.sql.SQLException: (conn=150057) The MySQL server is running with the --read-only option so it cannot execute this statement
Я прочитал ответы на другие вопросы о SO, и они говорят, что это происходит из-за кеширования DNS, используемого AWS, среди прочих причин.
Я также говорил со службой поддержки AWS, и они посоветовалиИспользуйте конечные точки записи, только если приложение выполняет обе операции чтения / записи.Однако конечная точка считывателя отвечает за распределение нагрузки, поэтому функциональность будет потеряна, и все запросы попадут в экземпляр писателя.
Я также читал эту статью в документах MariaDB: Конфигурация Aurora в MariaDB
[...] рекомендуемая строка URL должна использовать только конечную точку кластера.
Драйвер автоматически обнаружит главные и подчиненные устройства этого кластера из текущей конечной точки кластера во времявремя соединенияЭто позволяет добавлять новые реплики в экземпляр кластера, которые будут обнаружены без изменения конфигурации драйвера.
Нужно ли предоставлять только конечную точку кластера записи, а MariaDB позаботится о балансировке нагрузки между конечными точками записи и чтения?Или мне нужно предоставить обоим дополнительную конфигурацию?