Запутался насчет баз данных чтения AWS RDS. Почему я могу редактировать строки?

Редактировать: я не пытаюсь редактировать прочитанную реплику. Я говорю, что я редактировал это, и я не понимаю, почему я смог.

У меня есть база данных в США-Запад. Я сделал реплику чтения в Мумбаи, поэтому пользователи в Индии не испытывают медлительности. Из любопытства я попытался отредактировать строку в базе данных чтения-реплики Мумбая, надеясь получить ошибку безопасности, отклоняющую мою попытку записи (поскольку, в конце концов, это реплика READ). Но операция записи прошла успешно. Это почему? Разве это не должна быть база данных только для чтения?

Затем я пошел в базу данных master, надеясь, что процесс записи будет, по крайней мере, синхронизирован, но выполнение моей записи не сохранялось. Основная база данных теперь отличалась от места.

Я также попытался отредактировать данные в базе данных master, надеясь, что они реплицируют их в базу данных slave, но это также не удалось.

Очевидно, я чего-то не понимаю.

2 ответа

Взгляните на эту ссылку из Amazon Web Service, чтобы получить представление:

Как настроить реплику чтения экземпляра базы данных Amazon RDS для изменения?

Возможно, ваша реплика чтения имеет флаг read_only = false


Измените вновь созданную группу параметров и установите следующий параметр:

  • В области навигации выберите Группы параметров. Доступные группы параметров БД появятся в списке.
  • В списке выберите группу параметров, которую вы хотите изменить.
  • Выберите " Изменить параметры" и установите для следующего параметра указанное значение: read_only = 0
  • Выберите Сохранить изменения.

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

Работа с репликами чтения экземпляров БД MariaDB, MySQL и PostgreSQL

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

Ссылка: /questions/11590802/vremya-sinhronizatsii-dannyih-aws-rds-mysql-read-replicas/11590806#11590806

Факты о RDS

  • В реплике чтения создается снимок первичной базы данных.
  • Реплики чтения доступны в Amazon RDS для MySQL, MariaDB и PostgreSQL.
  • Реплики чтения в Amazon RDS для MySQL, MariaDB и PostgreSQL обеспечивают дополнительный механизм доступности для развертываний Amazon RDS Multi-AZ
  • Весь трафик между базой данных источника и назначения шифруется для реплики чтения.
  • Вам необходимо включить резервное копирование перед созданием реплик чтения. Это можно сделать, установив период хранения резервной копии на значение, отличное от 0
  • Amazon RDS для MySQL, MariaDB и PostgreSQL в настоящее время позволяют создавать до пяти реплик чтения для данного исходного экземпляра БД
  • Можно создать реплику чтения другой реплики чтения. Вы можете создать реплику чтения второго уровня из существующей реплики чтения первого уровня. Создав реплику чтения второго уровня, вы сможете переместить часть нагрузки репликации из экземпляра базы данных master в реплику чтения первого уровня.
  • Даже если реплика чтения обновляется из исходной базы данных, целевая реплика может по-прежнему не синхронизироваться по разным причинам.
  • Вы можете удалить реплику чтения в любой момент времени.

Бонусная рекомендация

9 ошибок, которые убивают вашу репликацию AWS RDS

Я была такая же проблема. (Старый вопрос, но я нигде не нашел ответа, и это была моя точная проблема)

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

Проблема заключалась в группах параметров.

В моем случае я изменил свою первичную группу параметров с группы параметров по умолчанию на ту, которая допускает таблицы без учета регистра. Группа параметров не копируется в новый регион, поэтому при репликации произошел сбой:

Error 'Table 'MY_TABLE' doesn't exist' on query. Default database: 'mydb'. Query: 'UPDATE MY_TABLE SET ....''

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

Я также запустил этот сценарий на только что созданной реплике:

CALL mysql.rds_start_replication

Я не уверен, требовалось ли это, но я все равно запустил его.

Я думаю, что только добавление индекса может быть сделано на ведомой базе данных в amazon rds, если вы поместите реплику чтения в режим записи, и она будет продолжена в режиме записи, пока вы не измените параметр read_only=1 и не примените его немедленно.

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