9.10.3 Восстановление серверов-участников и кластеров в InnoDB ClusterSet
В зависимости от проблем или потребностей технического обслуживания кластера, доступны следующие операции для работы с его серверами-участниками. Если не указано иное, используйте объекты Cluster и ClusterSet, которые вы извлекли с помощью учетной записи администратора InnoDB Cluster или учетной записи конфигурации сервера, чтобы учетная запись пользователя по умолчанию, хранящаяся в объекте ClusterSet, имела правильные разрешения.
-
Добавление дополнительных экземпляров серверов в кластер, используя команду
, как описано в процедуре в разделе 9.4, «Развёртывание InnoDB ClusterSet». Более подробную информацию о команде см. в разделе 8.4.4, «Добавление экземпляров в InnoDB Cluster».cluster.addInstance()Обратите внимание, что для этой операции необходимо использовать учетную запись конфигурации сервера InnoDB Cluster и объект
Cluster, который был извлечен с использованием этой учетной записи. Учетная запись также должна существовать на экземпляре сервера, как объяснено в разделе 9.3, «Учетные записи пользователей для InnoDB ClusterSet».При использовании этой команды для добавления сервера-участника в InnoDB Cluster, который является частью развертывания InnoDB ClusterSet, экземпляр сервера добавляется в кластер и снабжается данными для InnoDB ClusterSet. На экземпляре настраивается канал репликации ClusterSet, и применяются необходимые настройки для работы в развертывании InnoDB ClusterSet.
-
Воссоединение экземпляра сервера, который ранее входил в состав кластера, но не смог автоматически воссоединиться с кластером, используя команду
. Подробности этой операции см. в разделе 8.8.1, «Воссоединение экземпляра с кластером».cluster.rejoinInstance()При использовании этой команды для воссоединения сервера-участника с InnoDB Cluster, который является частью развертывания InnoDB ClusterSet, экземпляр сервера воссоединяется с кластером и снабжается данными для InnoDB ClusterSet. На экземпляре настраивается канал репликации ClusterSet, и применяются необходимые настройки для работы в развертывании InnoDB ClusterSet.
-
Удаление экземпляра сервера из кластера, используя команду
. Укажите имя хоста и номер порта экземпляра сервера, который необходимо удалить. Подробности этой операции см. в Удалении экземпляров из InnoDB Cluster. Доступна опцияcluster.removeInstance()force, но её следует использовать только в крайних случаях.При использовании этой команды с сервером-участником в развертывании InnoDB ClusterSet MySQL Shell сбрасывает все настройки, применённые для InnoDB ClusterSet, и сбрасывает настройки канала репликации ClusterSet.
-
Изменение первичного сервера кластера на другого сервера-участника, используя команду
. Изменение первичного сервера позволяет выполнить техническое обслуживание и обновления на текущем первичном сервере или выбрать первичный сервер, если собственный механизм выбора первичного сервера Group Replication не автоматически выбирает нужный сервер.cluster.setPrimaryInstance(instance)Укажите имя хоста и номер порта экземпляра сервера, который должен стать первичным. Можно использовать опцию
runningTransactionsTimeout, чтобы указать тайм-аут от 0 до 3600 секунд для транзакций, выполняющихся при использовании функции, что также останавливает новые входящие транзакции. По умолчанию тайм-аут не установлен, поэтому, если вы его не зададите, нет верхнего предела времени ожидания операции, и новые транзакции могут начинаться в это время.При использовании этой команды с сервером-участником в развертывании InnoDB ClusterSet MySQL Shell предварительно останавливает канал репликации ClusterSet на сервере и после этого перезапускает его. Кроме того, если кластер является реплицируемым, MySQL Shell сохраняет первичный сервер в режиме только чтения, а не в режиме чтения-записи, как это обычно происходит с первичным сервером InnoDB Cluster.
-
Восстановление кластера, потерявшего кворум, принудительно установив кворум с оставшимися экземплярами, используя команду
. Укажите имя хоста и номер порта онлайн-экземпляра сервера с правильными метаданными. Операция приводит к тому, что кластер состоит из этого и других доступных экземпляров, а также исключает разделённые экземпляры. Эта операция может привести к сценарию «расщеплённого мозга», поэтому её следует рассматривать как крайнюю меру. Подробности этой операции см. в разделе 8.8.2, «Восстановление кластера после потери кворума».cluster.forceQuorumUsingPartitionOf(instance)При использовании этой команды с сервером-участником в развертывании InnoDB ClusterSet MySQL Shell проверяет, является ли целевой кластер по-прежнему частью ClusterSet, и предупреждает вас, если он был аннулирован. Он также автоматически перезапускает канал репликации ClusterSet после этого. Если кластер является реплицируемым, MySQL Shell сохраняет первичный сервер в режиме только чтения, а не в режиме чтения-записи, как это обычно происходит с первичным сервером InnoDB Cluster.
-
Перезагрузка кластера, который полностью отключён, используя команду
dba.rebootClusterFromCompleteOutage(). Подробности этой операции см. в разделе 8.8.3, «Перезагрузка кластера после серьёзного сбоя».При использовании этой команды с сервером-участником в развертывании InnoDB ClusterSet MySQL Shell проверяет, является ли целевой кластер по-прежнему частью ClusterSet, и предупреждает вас, если он был аннулирован.
Если кластер не был аннулирован, MySQL Shell сразу же присоединяет его к развертыванию InnoDB ClusterSet после перезагрузки. Если кластер был аннулирован, необходимо выполнить операцию
для его воссоединения с развертыванием InnoDB ClusterSet. Инструкции по этому вопросу см. в разделе 9.10.5, «Воссоединение кластера с InnoDB ClusterSet».clusterSet.rejoinCluster()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.