Spec-Zone.ru › MySQL 5.7

14.21.6 Подключение InnoDB memcached и репликация

Так как плагин daemon_memcached поддерживает MySQL, обновления, внесенные на сервере-источнике через интерфейс memcached, могут быть реплицированы для резервного копирования, балансирования интенсивных операций чтения и обеспечения высокой доступности. Все команды memcached поддерживаются с бинарным протоколированием.

Вам не нужно настраивать плагин daemon_memcached на серверах-репликах. Главное преимущество этой конфигурации — увеличение пропускной способности записи на источнике. Скорость механизма репликации не затронута.

В следующих разделах показано, как использовать возможности бинарного журнала при использовании плагина daemon_memcached с репликацией MySQL. Предполагается, что вы выполнили настройку, описанную в Разделе 14.21.3 «Настройка плагина InnoDB memcached».

Включение бинарного журнала InnoDB memcached

  1. Чтобы использовать плагин daemon_memcached с MySQL, включите параметр конфигурации innodb_api_enable_binlog на сервере-источнике. Этот параметр можно установить только при запуске сервера. Также необходимо включить бинарный журнал MySQL на сервере-источнике, используя параметр --log-bin. Вы можете добавить эти параметры в файл конфигурации MySQL или в командную строку mysqld.

    mysqld ... --log-bin -–innodb_api_enable_binlog=1
    
  2. Настройте сервера-источник и реплику, как описано в Разделе 16.1.2 «Настройка репликации на основе положения файла бинарного журнала».

  3. Используйте mysqldump для создания моментальной копии данных источника и синхронизируйте её на сервере реплики.

    source $> mysqldump --all-databases --lock-all-tables > dbdump.db
    replica $> mysql < dbdump.db
    
  4. На сервере-источнике выполните SHOW MASTER STATUS для получения координат бинарного журнала источника.

    mysql> SHOW MASTER STATUS;
    
  5. На сервере-реплике используйте оператор CHANGE MASTER TO для настройки сервера-реплики с использованием координат бинарного журнала источника.

    mysql> CHANGE MASTER TO
           MASTER_HOST='localhost',
           MASTER_USER='root',
           MASTER_PASSWORD='',
           MASTER_PORT = 13000,
           MASTER_LOG_FILE='0.000001,
           MASTER_LOG_POS=114;
    
  6. Запустите реплику.

    mysql> START SLAVE;
    

    Если в журнале ошибок выводится сообщение, подобное следующему, реплика готова к репликации.

    2013-09-24T13:04:38.639684Z 49 [Note] Slave I/O thread: connected to
    master 'root@localhost:13000', replication started in log '0.000001'
    at position 114
    

Тестирование конфигурации репликации InnoDB memcached

Этот пример демонстрирует, как протестировать конфигурацию репликации InnoDB memcached с использованием memcached и telnet для вставки, обновления и удаления данных. Клиент MySQL используется для проверки результатов на серверах-источнике и реплике.

В примере используется таблица demo_test, которая была создана скриптом конфигурации innodb_memcached_config.sql во время начальной настройки плагина daemon_memcached. Таблица demo_test содержит один пример записи.

  1. Используйте команду set для вставки записи с ключом test1, значением флага 10, значением срока действия 0, значением cas 1 и значением t1.

    telnet 127.0.0.1 11211
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    set test1 10 0 1
    t1
    STORED
    
  2. На сервере-источнике проверьте, что запись была вставлена в таблицу demo_test. Предполагая, что таблица demo_test ранее не изменялась, должно быть две записи. Пример записи с ключом AA и запись, которую вы только что вставили, с ключом test1. Столбец c1 соответствует ключу, столбец c2 — значению, столбец c3 — значению флага, столбец c4 — значению cas, а столбец c5 — времени истечения срока действия. Время истечения срока действия было установлено в 0, так как оно не используется.

    mysql> SELECT * FROM test.demo_test;
    +-------+--------------+------+------+------+
    | c1    | c2           | c3   | c4   | c5   |
    +-------+--------------+------+------+------+
    | AA    | HELLO, HELLO |    8 |    0 |    0 |
    | test1 | t1           |   10 |    1 |    0 |
    +-------+--------------+------+------+------+
    
  3. Проверьте, что та же запись была реплицирована на сервере-реплике.

    mysql> SELECT * FROM test.demo_test;
    +-------+--------------+------+------+------+
    | c1    | c2           | c3   | c4   | c5   |
    +-------+--------------+------+------+------+
    | AA    | HELLO, HELLO |    8 |    0 |    0 |
    | test1 | t1           |   10 |    1 |    0 |
    +-------+--------------+------+------+------+
    
  4. ...

Заметки по бинарному журналу InnoDB memcached

Формат бинарного журнала:

  • Большинство операций memcached отображаются в операторах (аналогичные insert, delete, update). Поскольку MySQL-сервер не обрабатывает фактический оператор SQL, все команды memcached (кроме flush_all) используют протоколирование репликации на основе строк (RBR), которое независимо от параметра binlog_format сервера.

  • Команда memcached flush_all отображается в команде TRUNCATE TABLE. Поскольку команды могут использовать только протоколирование на основе операторов, команда flush_all реплицируется путём отправки оператора TRUNCATE TABLE.

Транзакции:

  • Концепция транзакций обычно не является частью приложений memcached. Из соображений производительности используются daemon_memcached_r_batch_size и daemon_memcached_w_batch_size для управления размером пакета для операций чтения и записи. Эти настройки не влияют на репликацию. Каждая SQL-операция в подлежащей таблице InnoDB реплицируется после успешного завершения.

  • Значение по умолчанию параметра daemon_memcached_w_batch_size составляет 1, что означает, что каждая операция записи memcached коммитится немедленно. Это значение по умолчанию влечёт за собой определённую издержки производительности, чтобы избежать несоответствий в данных, видимых на серверах-источнике и реплике. Реплицированные записи всегда доступны немедленно на сервере-реплике. Если вы установите daemon_memcached_w_batch_size на значение больше 1, записи, вставленные или обновлённые через memcached, не будут немедленно отображаться на сервере-источнике. Чтобы увидеть записи на сервере-источнике до их коммита, выполните SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/innodb-memcached-replication.html

Spec-Zone.ru

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