Spec-Zone.ru › MySQL Shell 9.2

9.10.3 Восстановление серверов-участников и кластеров в InnoDB ClusterSet

В зависимости от проблем или потребностей технического обслуживания кластера, доступны следующие операции для работы с его серверами-участниками. Если не указано иное, используйте объекты Cluster и ClusterSet, которые вы извлекли с помощью учетной записи администратора InnoDB Cluster или учетной записи конфигурации сервера, чтобы учетная запись пользователя по умолчанию, хранящаяся в объекте ClusterSet, имела правильные разрешения.

  • Добавление дополнительных экземпляров серверов в кластер, используя команду cluster.addInstance(), как описано в процедуре в разделе 9.4, «Развёртывание InnoDB ClusterSet». Более подробную информацию о команде см. в разделе 8.4.4, «Добавление экземпляров в InnoDB Cluster».

    Обратите внимание, что для этой операции необходимо использовать учетную запись конфигурации сервера InnoDB Cluster и объект Cluster, который был извлечен с использованием этой учетной записи. Учетная запись также должна существовать на экземпляре сервера, как объяснено в разделе 9.3, «Учетные записи пользователей для InnoDB ClusterSet».

    При использовании этой команды для добавления сервера-участника в InnoDB Cluster, который является частью развертывания InnoDB ClusterSet, экземпляр сервера добавляется в кластер и снабжается данными для InnoDB ClusterSet. На экземпляре настраивается канал репликации ClusterSet, и применяются необходимые настройки для работы в развертывании InnoDB ClusterSet.

  • Воссоединение экземпляра сервера, который ранее входил в состав кластера, но не смог автоматически воссоединиться с кластером, используя команду cluster.rejoinInstance(). Подробности этой операции см. в разделе 8.8.1, «Воссоединение экземпляра с кластером».

    При использовании этой команды для воссоединения сервера-участника с InnoDB Cluster, который является частью развертывания InnoDB ClusterSet, экземпляр сервера воссоединяется с кластером и снабжается данными для InnoDB ClusterSet. На экземпляре настраивается канал репликации ClusterSet, и применяются необходимые настройки для работы в развертывании InnoDB ClusterSet.

  • Удаление экземпляра сервера из кластера, используя команду cluster.removeInstance(). Укажите имя хоста и номер порта экземпляра сервера, который необходимо удалить. Подробности этой операции см. в Удалении экземпляров из InnoDB Cluster. Доступна опция force, но её следует использовать только в крайних случаях.

    При использовании этой команды с сервером-участником в развертывании InnoDB ClusterSet MySQL Shell сбрасывает все настройки, применённые для InnoDB ClusterSet, и сбрасывает настройки канала репликации ClusterSet.

  • Изменение первичного сервера кластера на другого сервера-участника, используя команду cluster.setPrimaryInstance(instance). Изменение первичного сервера позволяет выполнить техническое обслуживание и обновления на текущем первичном сервере или выбрать первичный сервер, если собственный механизм выбора первичного сервера Group Replication не автоматически выбирает нужный сервер.

    Укажите имя хоста и номер порта экземпляра сервера, который должен стать первичным. Можно использовать опцию runningTransactionsTimeout, чтобы указать тайм-аут от 0 до 3600 секунд для транзакций, выполняющихся при использовании функции, что также останавливает новые входящие транзакции. По умолчанию тайм-аут не установлен, поэтому, если вы его не зададите, нет верхнего предела времени ожидания операции, и новые транзакции могут начинаться в это время.

    При использовании этой команды с сервером-участником в развертывании InnoDB ClusterSet MySQL Shell предварительно останавливает канал репликации ClusterSet на сервере и после этого перезапускает его. Кроме того, если кластер является реплицируемым, MySQL Shell сохраняет первичный сервер в режиме только чтения, а не в режиме чтения-записи, как это обычно происходит с первичным сервером InnoDB Cluster.

  • Восстановление кластера, потерявшего кворум, принудительно установив кворум с оставшимися экземплярами, используя команду cluster.forceQuorumUsingPartitionOf(instance). Укажите имя хоста и номер порта онлайн-экземпляра сервера с правильными метаданными. Операция приводит к тому, что кластер состоит из этого и других доступных экземпляров, а также исключает разделённые экземпляры. Эта операция может привести к сценарию «расщеплённого мозга», поэтому её следует рассматривать как крайнюю меру. Подробности этой операции см. в разделе 8.8.2, «Восстановление кластера после потери кворума».

    При использовании этой команды с сервером-участником в развертывании InnoDB ClusterSet MySQL Shell проверяет, является ли целевой кластер по-прежнему частью ClusterSet, и предупреждает вас, если он был аннулирован. Он также автоматически перезапускает канал репликации ClusterSet после этого. Если кластер является реплицируемым, MySQL Shell сохраняет первичный сервер в режиме только чтения, а не в режиме чтения-записи, как это обычно происходит с первичным сервером InnoDB Cluster.

  • Перезагрузка кластера, который полностью отключён, используя команду dba.rebootClusterFromCompleteOutage(). Подробности этой операции см. в разделе 8.8.3, «Перезагрузка кластера после серьёзного сбоя».

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

    Если кластер не был аннулирован, MySQL Shell сразу же присоединяет его к развертыванию InnoDB ClusterSet после перезагрузки. Если кластер был аннулирован, необходимо выполнить операцию clusterSet.rejoinCluster() для его воссоединения с развертыванием InnoDB ClusterSet. Инструкции по этому вопросу см. в разделе 9.10.5, «Воссоединение кластера с InnoDB ClusterSet».

    MySQL Shell также автоматически перезапускает канал репликации ClusterSet после этой операции. Если кластер является реплицируемым, MySQL Shell сохраняет первичный сервер в режиме только чтения, а не в режиме чтения-записи, как это обычно происходит с первичным сервером InnoDB Cluster.

Вы не можете распустить InnoDB Cluster, который в настоящее время является частью развертывания InnoDB ClusterSet, если это не единственный кластер в ClusterSet или кластер аннулирован. Во всех других конфигурациях необходимо удалить его из InnoDB ClusterSet, как описано в разделе 9.10.4, «Удаление кластера из InnoDB ClusterSet».

Если кластер является единственным кластером в ClusterSet или кластер аннулирован, можно использовать dba.dropMetadataSchema() или cluster.dissolve() для работы с кластером.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-shell-9.2-en/innodb-clusterset-cluster-repair.html

Spec-Zone.ru

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