Spec-Zone .ru
спецификации, руководства, описания, API

22.2.4.7. Запись Полусинхронных Плагинов Репликации

Этот раздел описывает, как записать полусинхронные плагины сервера репликации, используя плагины в качестве примера, найденные в plugin/semisync каталог исходных дистрибутивов MySQL. Тот каталог содержит исходные файлы для основных и ведомых названных плагинов rpl_semi_sync_master и rpl_semi_sync_slave. Информация здесь покрывает только, как установить сменную платформу. Для получения дополнительной информации о том, как плагины реализуют функции репликации, см. источник.

Чтобы записать полусинхронный плагин репликации, включайте следующий заголовочный файл в сменный исходный файл. Другой MySQL или общие заголовочные файлы могли бы также быть необходимы.

#include <mysql/plugin.h>

plugin.h определяет MYSQL_REPLICATION_PLUGIN тип плагина сервера и структуры данных должны были объявить плагин.

Для основной стороны, semisync_master_plugin.cc содержит этот общий дескриптор для названного плагина rpl_semi_sync_master:

mysql_declare_plugin(semi_sync_master){  MYSQL_REPLICATION_PLUGIN,  &semi_sync_master_plugin,  "rpl_semi_sync_master",  "He Zhenxing",  "Semi-synchronous replication master",  PLUGIN_LICENSE_GPL,  semi_sync_master_plugin_init, /* Plugin Init */  semi_sync_master_plugin_deinit, /* Plugin Deinit */  0x0100 /* 1.0 */,  semi_sync_master_status_vars, /* status variables */  semi_sync_master_system_vars, /* system variables */  NULL,                         /* config options */  0,                            /* flags */}mysql_declare_plugin_end;

Для ведомой стороны, semisync_slave_plugin.cc содержит этот общий дескриптор для названного плагина rpl_semi_sync_slave:

mysql_declare_plugin(semi_sync_slave){  MYSQL_REPLICATION_PLUGIN,  &semi_sync_slave_plugin,  "rpl_semi_sync_slave",  "He Zhenxing",  "Semi-synchronous replication slave",  PLUGIN_LICENSE_GPL,  semi_sync_slave_plugin_init, /* Plugin Init */  semi_sync_slave_plugin_deinit, /* Plugin Deinit */  0x0100 /* 1.0 */,  semi_sync_slave_status_vars,  /* status variables */  semi_sync_slave_system_vars,  /* system variables */  NULL,                         /* config options */  0,                            /* flags */}mysql_declare_plugin_end;

И для основных и для ведомых плагинов, у общего дескриптора есть указатели на специфичный для типа дескриптор, инициализацию и функции deinitialization, и к состоянию и системным переменным, реализованным плагином. Для получения информации о переменной установке см. Раздел 22.2.4.2.2, "Состояние Плагина сервера и Системные Переменные". Следующие комментарии обсуждают специфичный для типа дескриптор и инициализацию и функции deinitialization для основного плагина, но применяются так же к ведомому плагину.

semi_sync_master_plugin элемент дескриптора начальника управления указывает на специфичный для типа дескриптор, который состоит только из специфичного для типа номера версии API:

struct Mysql_replication semi_sync_master_plugin= {  MYSQL_REPLICATION_INTERFACE_VERSION};

Инициализация и deinitialization объявления функции похожи на это:

static int semi_sync_master_plugin_init(void *p);static int semi_sync_master_plugin_deinit(void *p);

Функция инициализации использует указатель, чтобы зарегистрировать транзакцию и двоичное журналирование "наблюдатели" с сервером. После успешной инициализации сервер заботится о вызове наблюдателей в подходящее время. (Для получения дополнительной информации на наблюдателях, см. исходные файлы.) Функция deinitialization очищает, вычеркивая из списка наблюдателей. Каждая функция возвращается 0 для успеха или 1, если ошибка происходит.

Чтобы скомпилировать и установить сменный объектный файл библиотеки, используйте инструкции в Разделе 22.2.4.3, "Компилируя и Устанавливая Сменные Библиотеки". Чтобы использовать файлы библиотеки, они должны быть установлены в сменном каталоге (каталог, названный plugin_dir системная переменная). Для rpl_semi_sync_master и rpl_semi_sync_slave плагины, они компилируются и устанавливаются, когда Вы создаете MySQL из источника. Они также включаются в двоичные дистрибутивы. Процесс сборки производит совместно использованные библиотеки объектов с именами semisync_master.so и semisync_slave.so (суффикс мог бы отличаться в зависимости от Вашей платформы).