Spec-Zone.ru › MySQL Shell 9.2

9.10.4 Удаление кластера из InnoDB ClusterSet

Для удаления кластера из InnoDB ClusterSet используйте команду clusterSet.removeCluster(). Доступна опция force, если к кластеру невозможно подключиться.

Команда clusterSet.removeCluster() имеет следующий синтаксис:

         clusterSet.removeCluster(clusterName[, options])
      

Кластеры могут быть удалены из ClusterSet, удаляя сам кластер, но оставляя его нераспакованным, или удаляя кластер и расщепляя его на отдельные инстансы. Все данные пользователей сохраняются в обоих случаях.

По умолчанию удаленный кластер расщепляется на свои составляющие инстансы. Это настраивается опцией dissolve, которая по умолчанию установлена в значение true.

Важно

Основной кластер в InnoDB ClusterSet не может быть удален с помощью этой команды. Если вам необходимо удалить основной кластер, сначала выполните контролируемое переключение (см. Раздел 9.8, «Контролируемое переключение InnoDB ClusterSet») или аварийное переключение (см. Раздел 9.9, «Аварийное переключение InnoDB ClusterSet»), чтобы понизить основной кластер до реплики и повысить один из реплик до основного. После этого бывший основной кластер может быть удален с помощью этой процедуры.

Удаленный InnoDB Кластер не может быть добавлен обратно в развертывание InnoDB ClusterSet. Если вы хотите снова использовать серверные инстансы в развертывании, вы можете использовать их для создания нового кластера и добавления этого кластера в ClusterSet.

  • Удаление и расщепление кластера

  • Удаление кластера и обновление как автономного

Удаление и расщепление кластера

Для удаления кластера из InnoDB ClusterSet и расщепления кластера выполните следующие действия:

  1. Используя MySQL Shell, подключитесь к любому серверу-члену в основном кластере или в одном из реплик, используя учетную запись администратора InnoDB Cluster (созданную с помощью cluster.setupAdminAccount()). Вы также можете использовать учетную запись конфигурации сервера InnoDB Cluster, которая также имеет необходимые разрешения. После установления соединения получите объект ClusterSet, используя команду dba.getClusterSet() или cluster.getClusterSet(). Важно использовать учетную запись администратора InnoDB Cluster или учетную запись конфигурации сервера, чтобы учетная запись пользователя по умолчанию, хранящаяся в объекте ClusterSet, имела правильные разрешения.

  2. Проверьте состояние всего развертывания, используя функцию clusterSet.status() AdminAPI в MySQL Shell. Например:

    mysql-js> myclusterset.status({extended: 1})
    

    Объяснение вывода см. в Разделе 9.7, «Состояние и топология InnoDB ClusterSet».

    При выполнении команды clusterSet.removeCluster() в развертывании InnoDB ClusterSet должен быть активный и доступный основной кластер, и это не должен быть удаляемый кластер. Удаляемый кластер должен иметь статус реплики. Он может быть недействительным и не обязательно должен быть доступным.

  3. Проверьте параметры маршрутизации, заданные для каждого экземпляра MySQL Router, и глобальную политику для развертывания InnoDB ClusterSet, выполнив команду clusterSet.routingOptions() в MySQL Shell, подключившись к любому члену сервера в развертывании InnoDB ClusterSet. Убедитесь, что ни один экземпляр MySQL Router не маршрутизирует трафик в удаляемый кластер. Если такие есть, необходимо изменить их настройки на маршрутизацию трафика в другой кластер, используя команду clusterSet.setRoutingOption(), как описано в Разделе 9.6, «Интеграция MySQL Router с InnoDB ClusterSet». Кластер нельзя удалить, если какой-либо экземпляр MySQL Router, известный развертыванию InnoDB ClusterSet, маршрутизирует трафик в него.

  4. Выполните команду clusterSet.removeCluster(), указав кластер, который вы хотите удалить из InnoDB ClusterSet. Например:

    mysql-js> myclusterset.removeCluster('clusterone')
    The Cluster 'clusterone' will be removed from the InnoDB ClusterSet.
    
    * Waiting for the Cluster to synchronize with the PRIMARY Cluster...
    ** Transactions replicated  ############################################################  100%
    * Updating topology
    ** Transactions replicated  ############################################################  100%
    * Stopping and deleting ClusterSet managed replication channel...
    
    The Cluster 'clusterone' was removed from the ClusterSet.
    
    • Параметр clusterName обязателен и определяет идентификатор, используемый для кластера в InnoDB ClusterSet, как указано в выводе команды clusterSet.status(). В примере, clusterone — это удаляемый кластер.

    • Используйте опцию dryRun, если вы хотите выполнить проверки и зарегистрировать изменения, не выполняя их фактически.

    • Используйте опцию timeout, чтобы указать максимальное количество секунд ожидания синхронизации кластера с основным кластером в InnoDB ClusterSet.

    • Используйте опцию force, чтобы удалить кластер из ClusterSet, когда основной экземпляр кластера недоступен.

    При выполнении команды clusterSet.removeCluster() MySQL Shell проверяет, что основной кластер в развертывании InnoDB ClusterSet доступен, что целевой кластер не является основным и что ни один экземпляр MySQL Router не маршрутизирует трафик в целевой кластер. Если какие-либо из этих условий не выполняются, возвращается ошибка. Если они выполнены, MySQL Shell выполняет следующие задачи для удаления целевого кластера из InnoDB ClusterSet:

    • Удаляет пользователя репликации, созданного для канала репликации ClusterSet на целевом кластере.

    • Синхронизирует основной сервер целевого кластера с основным кластером InnoDB ClusterSet и ожидает, пока все транзакции будут применены локально. Если таймаут истекает до завершения этого процесса, операция завершается неудачно. Если синхронизация не работает, повторите попытку с опцией force.

    • Останавливает канал репликации ClusterSet, затем удаляет канал и сбрасывает его настройки до значений по умолчанию.

    • Удаляет метаданные и информацию о членах целевого кластера из метаданных InnoDB ClusterSet.

    • Оставляет переменную системы установленной на всех серверах-членах, чтобы убедиться, что на них не будут выполняться обновления.

  5. Выполните команду clusterSet.status() снова, используя опцию extended, чтобы проверить состояние развертывания InnoDB ClusterSet.

  6. Удаленный InnoDB Кластер не может быть добавлен обратно в развертывание InnoDB ClusterSet, поэтому если вы хотите снова использовать серверные инстансы в развертывании, вам потребуется создать новый кластер, используя автономные инстансы. InnoDB Кластер неявно расщепляется во время процесса удаления, чтобы все члены стали автономными инстансами.

    Обратите внимание, что конфигурация Group Replication не удаляется из серверных инстансов, поэтому будьте осторожны при повторном использовании этих серверов в развертывании InnoDB ClusterSet, как объяснено в Разделе 9.1, «Требования к InnoDB ClusterSet». Поскольку инстансы были настроены для развертывания InnoDB ClusterSet, вероятность проблем ниже, но вы должны быть осведомлены о потенциальных различиях в конфигурации, особенно если инстансы повторно используются в другом развертывании InnoDB ClusterSet.

Удаление кластера и обновление как автономного

Чтобы удалить кластер из ClusterSet и сохранить его как автономный кластер, установите опцию dissolve в значение false.

Следующий пример показывает, как кластер с именем clustertwo удаляется из ClusterSet как автономный:

          myclusterset.removeCluster('clustertwo', {dissolve: false})
        

Если {dissolve: false} и force не включены, команда не может продолжить, если один или несколько членов недоступны.

Если {dissolve: false, force: true}, команда выполняется даже если один или несколько членов кластера недоступны. Кластер удаляется из ClusterSet как автономный, но недоступные члены не синхронизируются. Однако, если основной кластер недоступен, кластер расщепляется на его составляющие инстансы. Сохранение кластера как автономного невозможно, если основной кластер недоступен.

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

Spec-Zone.ru

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