16.3.9.2 Установка и настройка полусинхронной репликации
Полусинхронная репликация реализуется с помощью плагинов, поэтому плагины необходимо установить на сервер, чтобы их можно было использовать. После установки плагина вы управляете им с помощью системных переменных, связанных с ним. Эти системные переменные недоступны до тех пор, пока не будет установлен соответствующий плагин.
В этом разделе описано, как установить плагины полусинхронной репликации. Общие сведения об установке плагинов см. в разделе 5.5.1 «Установка и удаление плагинов».
Для использования полусинхронной репликации должны быть выполнены следующие требования:
Для возможности установки плагинов требуется сервер MySQL, поддерживающий динамическую загрузку. Чтобы проверить это, убедитесь, что значение системной переменной
have_dynamic_loadingравноYES. Бинарные дистрибутивы должны поддерживать динамическую загрузку.Репликация должна уже работать, см. раздел 16.1 «Настройка репликации».
Не должно быть настроено несколько каналов репликации. Полусинхронная репликация совместима только с каналом репликации по умолчанию. См. раздел 16.2.2 «Каналы репликации».
Для настройки полусинхронной репликации используйте следующие инструкции. Здесь упомянутые операторы INSTALL PLUGIN, SET
GLOBAL, STOP SLAVE и START SLAVE требуют привилегии SUPER.
Дистрибутивы MySQL включают файлы плагинов полусинхронной репликации для стороны источника и стороны реплики.
Для использования соответствующим образом плагином сервером источника или реплики, файл библиотеки плагина должен находиться в каталоге плагинов MySQL (каталог, имя которого указано в системной переменной plugin_dir). При необходимости настройте расположение каталога плагинов, установив значение plugin_dir при запуске сервера.
Базовые имена файлов библиотек плагинов — semisync_master и semisync_slave. Суффикс имени файла отличается в зависимости от платформы (например, .so для Unix и подобных систем, .dll для Windows).
Файл библиотеки плагина источника должен быть присутствующим в каталоге плагинов сервера источника. Файл библиотеки плагина реплики должен быть присутствующим в каталоге плагинов каждого сервера реплики.
Для загрузки плагинов используйте оператор INSTALL
PLUGIN на источнике и на каждой реплике, которая должна быть полусинхронной, при необходимости корректируя суффикс .so для вашей платформы.
На стороне источника:
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
На каждой реплике:
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
Если попытка установки плагина приводит к ошибке на Linux, подобной показанной здесь, необходимо установить libimf:
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
ERROR 1126 (HY000): Can't open shared library
'/usr/local/mysql/lib/plugin/semisync_master.so'
(errno: 22 libimf.so: cannot open shared object file:
No such file or directory)
Вы можете получить libimf с https://dev.mysql.com/downloads/os-linux.html.
Чтобы увидеть, какие плагины установлены, используйте оператор SHOW PLUGINS или запросите таблицу схемы данных Information Schema PLUGINS.
Для проверки установки плагина, проверьте таблицу схемы данных Information Schema PLUGINS или используйте оператор SHOW PLUGINS (см. раздел 5.5.2 «Получение информации о плагинах сервера»). Например:
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
FROM INFORMATION_SCHEMA.PLUGINS
WHERE PLUGIN_NAME LIKE '%semi%';
+----------------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+----------------------+---------------+
| rpl_semi_sync_master | ACTIVE |
+----------------------+---------------+
Если плагин не удалось инициализировать, проверьте журнал ошибок сервера на наличие диагностических сообщений.
После установки плагина полусинхронной репликации он по умолчанию отключен. Для активации полусинхронной репликации плагины должны быть включены как на стороне источника, так и на стороне реплики. Если включена только одна сторона, репликация является асинхронной.
Для управления включением установленного плагина задайте соответствующие системные переменные. Вы можете установить эти переменные во время выполнения с помощью SET
GLOBAL или при запуске сервера в командной строке или в файле параметров.
Временные системные переменные со стороны источника:
SET GLOBAL rpl_semi_sync_master_enabled = {0|1};
SET GLOBAL rpl_semi_sync_master_timeout = N;
На стороне реплики доступна эта системная переменная:
SET GLOBAL rpl_semi_sync_slave_enabled = {0|1};
Для rpl_semi_sync_master_enabled или rpl_semi_sync_slave_enabled значение должно быть 1 для включения полусинхронной репликации или 0 для её отключения. По умолчанию эти переменные установлены в 0.
Для rpl_semi_sync_master_timeout значение N задается в миллисекундах. Значение по умолчанию — 10000 (10 секунд).
Если вы включаете полусинхронную репликацию на реплике во время выполнения, вам также необходимо запустить поток ввода/вывода репликации (прекратив его предварительно, если он уже запущен), чтобы заставить реплика подключиться к источнику и зарегистрироваться как полусинхронная реплика:
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;
Если поток ввода/вывода репликации уже запущен, и вы не перезапускаете его, реплика продолжает использовать асинхронную репликацию.
При запуске сервера переменные, которые контролируют полусинхронную репликацию, могут быть заданы в качестве параметров командной строки или в файле параметров. Настройка, указанная в файле параметров, вступает в силу каждый раз при запуске сервера. Например, вы можете установить переменные в файлах my.cnf на стороне источника и реплики следующим образом.
На стороне источника:
[mysqld]
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000 # 1 second
На каждой реплике:
[mysqld]
rpl_semi_sync_slave_enabled=1
© 2025 Oracle
Licensed under the GPLv2 License.