8.10.3 Восстановление серверов-членов и кластеров в InnoDB ClusterSet
В зависимости от проблем или требований к обслуживанию кластера, доступны следующие операции для работы с его серверами-членами. Если не указано иное, используйте объекты Cluster и ClusterSet, которые вы извлекли с помощью учетной записи администратора InnoDB Cluster или учетной записи конфигурации сервера, чтобы учетная запись пользователя по умолчанию, хранящаяся в объекте ClusterSet, имела правильные разрешения.
-
Добавление дополнительных экземпляров серверов в кластер с помощью команды
, как описано в процедуре в Разделе 8.4, «Развертывание InnoDB ClusterSet». Более подробную информацию о команде см. в Разделе 7.4.4, «Добавление экземпляров в InnoDB Cluster».cluster.addInstance()Обратите внимание, что для этой операции необходимо использовать учетную запись конфигурации сервера InnoDB Cluster и объект
Cluster, извлеченный с помощью этой учетной записи. Учетная запись также должна существовать на экземпляре сервера, как объясняется в Разделе 8.3, «Учетные записи пользователей для InnoDB ClusterSet».При использовании этой команды для добавления сервера-члена в InnoDB Cluster, который является частью развертывания InnoDB ClusterSet, экземпляр сервера добавляется в кластер и снабжается данными для InnoDB ClusterSet. Канал репликации ClusterSet настраивается на экземпляре, и применяются необходимые настройки для работы в развертывании InnoDB ClusterSet.
-
Подключение экземпляра сервера, который ранее был частью кластера, но не смог автоматически подключиться к кластеру, с помощью команды
. Подробную информацию об этой операции см. в Разделе 7.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.
-
Восстановление кластера, потерявшего кворум, путем принудительного кворума с оставшимися экземплярами с помощью команды
. Укажите имя хоста и номер порта активного экземпляра сервера с правильными метаданными. Операция делает кластер состоящим из этого и других доступных экземпляров и исключает разделенные экземпляры. Эта операция может создать сценарий раздвоения головного мозга, поэтому ее следует рассматривать как крайний случай. Подробную информацию об этой операции см. в Разделе 7.8.2, «Восстановление кластера после потери кворума».cluster.forceQuorumUsingPartitionOf(instance)При использовании этой команды с сервером-членом в развертывании InnoDB ClusterSet MySQL Shell проверяет, является ли целевой кластер по-прежнему допустимой частью ClusterSet, и предупреждает вас, если он был аннулирован. Также он автоматически перезапускает канал репликации ClusterSet после. Если кластер является кластером реплик, MySQL Shell сохраняет первичный сервер в режиме только для чтения, а не в режиме чтения/записи, как это обычно происходит с первичным сервером InnoDB Cluster.
-
Перезагрузка кластера, который полностью отключен, с помощью команды
dba.rebootClusterFromCompleteOutage(). Подробную информацию об этой операции см. в Разделе 7.8.3, «Перезагрузка кластера после серьезного сбоя».При использовании этой команды с сервером-членом в развертывании InnoDB ClusterSet MySQL Shell проверяет, является ли целевой кластер по-прежнему допустимой частью ClusterSet, и предупреждает вас, если он был аннулирован.
Если кластер не был аннулирован, MySQL Shell сразу же присоединяет его к развертыванию InnoDB ClusterSet после перезагрузки. Если кластер был аннулирован, необходимо использовать операцию
, чтобы присоединить его к развертыванию InnoDB ClusterSet. Инструкции по этому вопросу см. в Разделе 8.10.5, «Подключение кластера к InnoDB ClusterSet».clusterSet.rejoinCluster()MySQL Shell также автоматически перезапускает канал репликации ClusterSet после этой операции. Если кластер является кластером реплик, MySQL Shell сохраняет первичный сервер в режиме только для чтения, а не в режиме чтения/записи, как это обычно происходит с первичным сервером InnoDB Cluster.
Вы не можете распустить InnoDB Cluster, который в настоящее время является частью развертывания InnoDB ClusterSet, если это не единственный кластер в ClusterSet или кластер аннулирован. Во всех других конфигурациях необходимо удалить его из InnoDB ClusterSet, как описано в Разделе 8.10.4, «Удаление кластера из InnoDB ClusterSet».
Если кластер является единственным кластером в ClusterSet или кластер аннулирован, вы можете использовать dba.dropMetadataSchema() или в кластере.cluster.dissolve()
© 2025 Oracle
Licensed under the GPLv2 License.