Spec-Zone.ru › MySQL Connectors 1.0

10.2 Структуры данных двоичного лога C API

Функции C API для обработки потока событий репликации с сервера требуют обработчика соединения (указатель MYSQL *) и указателя на структуру MYSQL_RPL, которая описывает поток событий репликации для чтения из двоичного лога сервера. Например:

MYSQL *mysql = mysql_real_connect(...);

MYSQL_RPL rpl;

# ... initialize MYSQL_RPL members ...

int result = mysql_binlog_open(mysql, &rpl);

В этом разделе описаны члены структуры MYSQL_RPL. Обработчики соединений описаны в Разделе 5.2, «Основные структуры данных C API».

Применимые члены MYSQL_RPL зависят от операции двоичного лога, которая должна быть выполнена:

  • Перед вызовом mysql_binlog_open() вызывающий должен установить члены MYSQL_RPL от file_name_length до flags. Кроме того, если flags имеет установленный флаг MYSQL_RPL_GTID, вызывающий должен установить члены от gtid_set_encoded_size до gtid_set_arg.

  • После успешного вызова mysql_binlog_fetch() вызывающий проверяет члены size и buffer.

Описание членов структуры MYSQL_RPL:

  • file_name_length

    Длина имени файла двоичного лога для чтения. Этот член используется совместно с file_name; см. описание file_name.

  • file_name

    Имя файла двоичного лога для чтения:

    • Если file_name равен NULL, библиотека клиента устанавливает его в пустую строку и устанавливает file_name_length в 0.

    • Если file_name не равен NULL, file_name_length должен быть равен длине имени или 0. Если file_name_length равен 0, библиотека клиента устанавливает его в длину имени, в этом случае, file_name должен быть задан как строка с завершающим нулём.

    Чтобы читать с начала двоичного лога, не зная имени самого старого файла двоичного лога, установите file_name в NULL или пустую строку, а start_position в 4.

  • start_position

    Позиция, с которой начать чтение двоичного лога. Позиция первого события в любом данном файле двоичного лога равна 4.

  • server_id

    Идентификатор сервера для идентификации сервера, с которого читается двоичный лог.

  • flags

    Объединение флагов, влияющих на чтение двоичного лога, или 0, если флаги не установлены. Разрешены следующие значения флагов:

    • MYSQL_RPL_SKIP_HEARTBEAT

      Установите этот флаг, чтобы вызвать mysql_binlog_fetch() пропустить события ожидания.

    • MYSQL_RPL_GTID

      Установите этот флаг для чтения данных GTID (глобальный идентификатор транзакции). Если установлен, необходимо инициализировать члены структуры MYSQL_RPL, связанные с GTID, от gtid_set_encoded_size до gtid_set_arg, перед вызовом mysql_binlog_open().

      Подробное описание того, как клиентские программы используют эти члены, связанные с GTID, выходит за рамки этой документации. Для получения дополнительной информации, см. файл исходного кода mysqlbinlog.cc. Подробную информацию о репликации на основе GTID см. в .

  • gtid_set_encoded_size

    Размер данных набора GTID или 0.

  • fix_gtid_set

    Адрес функции обратного вызова для mysql_binlog_open() для заполнения набора GTID пакета команды, или NULL, если такой функции нет. Функция обратного вызова, если используется, должна иметь такой вызов:

    void my_callback(MYSQL_RPL *rpl, unsigned char *packet_gtid_set);
    
  • gtid_set_arg

    Указатель на данные набора GTID (если fix_gtid_set равен NULL) или указатель на значение, которое должно быть доступно для использования в функции обратного вызова (если fix_gtid_set не равен NULL). gtid_set_arg — это универсальный указатель, поэтому он может указывать на любой тип значения (например, строку, структуру или функцию). Его интерпретация в рамках обратного вызова зависит от того, как обратный вызов планирует его использовать.

  • size

    После успешного вызова mysql_binlog_fetch() размер возвращаемого события двоичного лога. Значение равно 0 для события EOF, больше 0 для события, отличного от EOF.

  • buffer

    После успешного вызова mysql_binlog_fetch() указатель на содержимое события двоичного лога.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/c-api-8.0-en/c-api-binary-log-data-structures.html

Spec-Zone.ru

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