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.