Spec-Zone.ru › MySQL Shell 8.4

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

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

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

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

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

Дополнительную информацию см. в ...

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

  • Если текущий экземпляр «чтения/записи» покидает кластер, 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, стандартному порту для классического протокола 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-8.4-en/test-failover.html

Spec-Zone.ru

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