Spec-Zone.ru › MariaDB

Реплики только для чтения

Распространённая настройка репликации заключается в том, чтобы реплики были только для чтения, чтобы никто случайно их не обновил. Если у реплики включена логирование бинарных событий и используется gtid_strict_mode, любые изменения, вызывающие изменения в бинарном журнале, остановят репликацию.

Когда переменная read_only установлена в 1, обновления разрешены только для пользователей с привилегией SUPER (<= MariaDB 10.5.1) или привилегией READ ONLY ADMIN (>= MariaDB 10.5.2), или для серверов репликации, выполняющих обновление с основного сервера. Вставка строк в таблицы журналов, обновления временных таблиц и OPTIMIZE TABLE или ANALYZE TABLE запросы к временным таблицам исключены из этого ограничения.

Если read_only установлено в 1, то SET PASSWORD доступно только пользователям с привилегией SUPER (<= MariaDB 10.5.1) или привилегией READ ONLY ADMIN (>= MariaDB 10.5.2).

Попытка установить переменную read_only в значение 1 завершится ошибкой, если в текущем сеансе есть блокировки таблиц или ожидающие транзакции.

Запрос будет ожидать другие сеансы, удерживающие блокировки таблиц. Пока происходит ожидание установки read_only, другие запросы на блокировки таблиц или транзакции также будут ожидать, пока read_only не будет установлено.

Начиная с MariaDB 10.3.19, некоторые проблемы, связанные с репликами только для чтения, были устранены:

  • CREATE, DROP, ALTER, INSERT и DELETE временных таблиц не регистрируются в бинарном журнале, даже в режиме записей или смешанном режиме. В более ранних версиях MariaDB проблему с временными таблицами можно избежать, используя binlog_format=ROW, в этом случае временные таблицы никогда не регистрируются.
  • Изменения в временных таблицах, созданных во время read_only, не будут регистрироваться даже после отключения режима read_only (например, если реплика была повышена до основного сервера).
  • Административные запросы ANALYZE, CHECK, OPTIMIZE и REPAIR не будут регистрироваться в бинарном журнале при режиме только для чтения.

Старые версии MariaDB

Если вы используете старую версию MariaDB с репликами только для чтения и включенным бинарным журналированием на реплике, и вам нужно внести изменения, но не хотите, чтобы они были записаны в бинарный журнал, самый простой способ избежать этого — отключить бинарное журналирование во время выполнения в режиме root во время обслуживания:

set sql_log_bin=0;
alter table test engine=rocksdb;

Это изменяет таблицу test на реплике на rocksdb без регистрации изменения в бинарном журнале.

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

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/read-only-replicas/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API