AWS RDS, показывающий устаревшие данные для экземпляра Multiple AZ (MySQL)

Мой экземпляр RDS временно показывал устаревшие данные.

Я побежал SELECT запрос на мои данные. Затем я запустил запрос на удаление данных из таблицы, а другой - на добавление новых данных в таблицу. Я побежал SELECT запрос, и он показывал старые данные.

Я управлял SELECT запрос СНОВА и ТОГДА он наконец показал мне новые данные.

Почему это случилось? У меня никогда не было этих проблем локально или в моих обычных инстанциях, отличных от AZ Есть ли способ избежать этого?

Я использую MySQL 5.6.23

2 ответа

Решение

Как это ни смущает... это было проблемой в нашем коде Spring Java, а не в AWS.

Метод изменил объект сущности базы данных. Сам метод не был транзакционным, но был вызван из транзакционного контекста, который сохранял бы любые изменения в объектах базы данных.

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

Согласно часто задаваемым вопросам Amazon RDS Multi-AZ, этого можно ожидать.

Конкретно это:

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

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

Другие вопросы по тегам