Spec-Zone.ru › MariaDB

mysql.gtid_slave_pos Таблица

Таблица mysql.gtid_slave_pos используется в репликации серверами-репликаторами для отслеживания их текущей позиции (идентификатора глобальной транзакции последней применённой транзакции). Использование таблицы позволяет реплике поддерживать согласованное значение переменной gtid_slave_pos системы при перезапуске сервера. См. Идентификатор глобальной транзакции.

Никогда не пытайтесь изменять таблицу напрямую. Если вам нужно изменить значение глобальной переменной gtid_slave_pos, используйте SET GLOBAL gtid_slave_pos = ... вместо этого.

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

Начиная с MariaDB 10.3.1, поддерживаются несколько версий этой таблицы, каждая с использованием разного движка хранения. Это выбирается с помощью опции gtid_pos_auto_engines, указав список имён движков через запятую. Затем сервер по запросу создаёт дополнительную версию таблицы, используя соответствующий движок хранения, и выбирает версию таблицы, используя тот же движок, что и остальная часть транзакции, избегая многодвижковых транзакций.

Например, при gtid_pos_auto_engines=innodb,rocksdb, таблицы mysql.gtid_slave_pos_InnoDB и mysql.gtid_slave_pos_RocksDB будут созданы и использованы, если необходимо. Если нет соответствия движку хранения, будет использована стандартная таблица mysql.gtid_slave_pos; это также происходит при репликации не транзакционных обновлений (например, MyISAM), так как в момент обновления таблицы mysql.gtid_slave_pos активной транзакции нет.

До MariaDB 10.3.1 доступна только стандартная таблица mysql.gtid_slave_pos. В этих версиях таблица предпочтительно должна использовать движок хранения, который используется для большинства реплицированных транзакций.

Стандартная таблица mysql.gtid_slave_pos будет первоначально создана с использованием стандартного движка хранения, установленного для сервера (который по умолчанию InnoDB). Если нагрузка приложения в основном состоит из не транзакционных таблиц MyISAM или Aria, то изменение движка хранения может быть полезно для предотвращения включения обновления InnoDB при каждой операции:

ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM;

Таблица mysql.gtid_slave_pos не должна изменяться вручную каким-либо иным способом. Начиная с MariaDB 10.3.1, предпочтительнее использовать переменную сервера gtid_pos_auto_engines для получения обновлений позиции GTID, чтобы использовать движки хранения TokuDB или RocksDB.

Обратите внимание, что по соображениям масштабируемости автоматическое создание новой таблицы mysql.gtid_slave_posXXX происходит асинхронно при подтверждении первой транзакции с новым движком хранения. Поэтому первые несколько транзакций будут обновлять старую версию таблицы, пока не будет создана и доступна новая версия.

Таблица mysql.gtid_slave_pos содержит следующие поля

Поле Тип Null Ключ Значение по умолчанию Описание
domain_id int(10) unsigned NO PRI NULL Идентификатор домена (см. Идентификатор домена глобальной транзакции).
sub_id bigint(20) unsigned NO PRI NULL Это поле позволяет несколько параллельных транзакций в пределах одного domain_id обновлять эту таблицу без конфликтов. В любой момент состояние репликации соответствует записям с наибольшим sub_id для каждого domain_id .
server_id int(10) unsigned NO NULL Идентификатор сервера.
seq_no bigint(20) unsigned NO NULL Номер последовательности, целое число, монотонно возрастающее для каждой новой группы событий, записанных в бинарный журнал.

Начиная с MariaDB 10.3.1, доступны некоторые переменные состояния для мониторинга использования различных версий таблицы gtid_slave_pos:

Transactions_gtid_foreign_engine

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

Rpl_transactions_multi_engine

Количество реплицированных транзакций, которые включали изменения в нескольких (транзакционных) движках хранения, до учёта обновления gtid_slave_pos. Это транзакции, которые уже были междвижковые, независимо от обновления позиции GTID, введённого репликацией.

Transactions_multi_engine

Количество транзакций, изменивших данные в нескольких (транзакционных) движках хранения. Если это значение существенно больше, чем Rpl_transactions_multi_engine, это указывает на то, что настройка gtid_pos_auto_engines может уменьшить необходимость междвижковых транзакций.

Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно компанией 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/mysqlgtid_slave_pos-table/

Spec-Zone.ru

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