Spec-Zone.ru › MySQL Shell 8.4

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

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

Важно

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

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

Для удаления кластера из InnoDB ClusterSet следуйте этой процедуре:

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

    mysql-js> \connect admin2@127.0.0.1:4410
    Creating a session to 'admin2@127.0.0.1:4410'
    Please provide the password for 'admin2@127.0.0.1:4410': ********
    Save password for 'admin2@127.0.0.1:4410'? [Y]es/[N]o/Ne[v]er (default No):
    Fetching schema names for autocompletion... Press ^C to stop.
    Closing old connection...
    Your MySQL connection id is 33
    Server version: 8.0.27-commercial MySQL Enterprise Server - Commercial
    No default schema selected; type \use <schema> to set one.
    <ClassicSession:admin2@127.0.0.1:4410>
    mysql-js> myclusterset = dba.getClusterSet()
    <ClusterSet:testclusterset>
    
  2. Проверьте состояние всего развертывания, используя функцию clusterSet.status() AdminAPI в MySQL Shell. Например:

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

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

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

  3. Проверьте параметры маршрутизации, установленные для каждого экземпляра MySQL Router, и глобальную политику для развертывания InnoDB ClusterSet, выполнив команду clusterSet.routingOptions() в MySQL Shell, подключившись к любому серверу-члену в развертывании InnoDB ClusterSet. Убедитесь, что ни один экземпляр MySQL Router не маршрутизирует трафик в кластер, который вы собираетесь удалить. Если такие есть, необходимо изменить их настройки для маршрутизации трафика в другой кластер с помощью команды clusterSet.setRoutingOption(), как описано в Разделе 8.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 Cluster неявно распускается во время процесса удаления, так что все члены становятся автономными экземплярами.

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

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

Spec-Zone.ru

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