Spec-Zone.ru › MySQL Shell 9.2

7.6 Тестирование высокой доступности кластера InnoDB

Для проверки работы высокой доступности кластера InnoDB, смоделируйте внезапную остановку, убив экземпляр. Кластер обнаружит, что экземпляр покинул кластер, и переконфигурирует себя. Способ переконфигурации кластера зависит от того, используете ли вы кластер с одним первичным узлом или с несколькими первичными узлами, и от роли, которую исполняет экземпляр в кластере.

В режиме с одним первичным узлом:

  • Если текущий первичный узел покидает кластер, один из вторичных экземпляров избирается новым первичным узлом, при этом экземпляры ранжируются по критерию наименьшего . MySQL Router перенаправляет соединения чтения-записи на вновь избранный первичный узел.

  • Если текущий вторичный узел покидает кластер, MySQL Router прекращает перенаправление соединений только для чтения на этот экземпляр.

Для получения дополнительной информации см. .

В режиме с несколькими первичными узлами:

  • Если текущий узел "R/W" покидает кластер, MySQL Router перенаправляет соединения чтения-записи на другие первичные узлы. Если ушедший экземпляр был последним первичным узлом в кластере, то кластер полностью отсутствует, и вы не сможете подключиться к порту MySQL Router.

Для получения дополнительной информации см. .

Существуют различные способы имитации ухода экземпляра из кластера, например, вы можете принудительно остановить сервер MySQL на экземпляре или использовать AdminAPI dba.killSandboxInstance(), если тестируется среда разработки.

В этом примере используется среда разработки с одним первичным узлом и тремя серверными экземплярами, при этом экземпляр, прослушивающий порт 3310, является текущим первичным узлом. Экземпляр неожиданно покидает кластер, что моделируется с помощью killing экземпляра:

Например, вы можете выполнить следующую команду JavaScript:

mysql-js> dba.killSandboxInstance(3310)

Или, используя команду Python:

mysql-py> dba.kill_sandbox_instance(3310)

Кластер обнаруживает изменение и автоматически выбирает новый первичный узел.

Предполагая, что ваша сессия подключена к порту 6446, стандартному порту для протокола classic MySQL чтения-записи, MySQL Router должен обнаружить изменение топологии кластера и перенаправить вашу сессию на вновь избранный первичный узел. Для проверки этого переключитесь на SQL-режим в MySQL Shell с помощью команды \sql и выберите переменную экземпляра, чтобы проверить, на какой экземпляр была перенаправлена ваша сессия.

Первое утверждение завершается неудачно, так как подключение к первоначальному первичному узлу было потеряно, что означает закрытие текущей сессии. MySQL Shell автоматически переподключается, и при повторном выполнении команды подтверждается новый порт.

mysql-js> \sql
Switching to SQL mode... Commands end with ;
mysql-sql> SELECT @@port;
ERROR: 2013 (HY000): Lost connection to MySQL server during query
The global session got disconnected.
Attempting to reconnect to 'root@localhost:6446'...
The global session was successfully reconnected.
mysql-sql> SELECT @@port;
+--------+
| @@port |
+--------+
|   3330 |
+--------+
1 row in set (0.00 sec)

В этом примере экземпляр на порту 3330 был избран новым первичным узлом. Эта выборка демонстрирует, что кластер InnoDB предоставляет автоматическое переключение при отказах, что MySQL Router автоматически переподключил нас к новому первичному экземпляру, и что мы имеем высокую доступность.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-shell-9.2-en/test-failover.html

Spec-Zone.ru

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