AWS RDS, показывающий устаревшие данные для экземпляра Multiple AZ (MySQL)
Мой экземпляр RDS временно показывал устаревшие данные.
Я побежал SELECT
запрос на мои данные. Затем я запустил запрос на удаление данных из таблицы, а другой - на добавление новых данных в таблицу. Я побежал SELECT
запрос, и он показывал старые данные.
Я управлял SELECT
запрос СНОВА и ТОГДА он наконец показал мне новые данные.
Почему это случилось? У меня никогда не было этих проблем локально или в моих обычных инстанциях, отличных от AZ Есть ли способ избежать этого?
Я использую MySQL 5.6.23
2 ответа
Как это ни смущает... это было проблемой в нашем коде Spring Java, а не в AWS.
Метод изменил объект сущности базы данных. Сам метод не был транзакционным, но был вызван из транзакционного контекста, который сохранял бы любые изменения в объектах базы данных.
Выглядело так, как будто это откат изменений, но он просто перезаписывал данные. Я предполагаю, что это переписало данные некоторое время назад, поэтому, пока кто-то не попытался изменить их, мы просто предполагали, что это были правильные данные.
Согласно часто задаваемым вопросам Amazon RDS Multi-AZ, этого можно ожидать.
Конкретно это:
Вы можете наблюдать повышенные задержки по сравнению со стандартным развертыванием экземпляра БД в одной зоне доступности в результате синхронной репликации данных, выполненной от вашего имени.
Конечно, это зависит от частоты задержек, которые вы наблюдаете, и от того, какое увеличенное время ожидания вы видите, но можно было бы обратиться в службу поддержки AWS в случае, если проблема часто воспроизводима.