Spec-Zone.ru › MySQL Shell 8.4

8.10.5 Воссоединение кластера с InnoDB ClusterSet

Если InnoDB Cluster входит в развертывание InnoDB ClusterSet, MySQL Shell автоматически восстанавливает его роль в топологии сразу после перезагрузки, при условии, что он функционирует удовлетворительно и не был помечен как недействительный. Однако, если кластер помечен как недействительный или канал репликации ClusterSet остановлен, необходимо использовать операцию clusterSet.rejoinCluster() для его воссоединения с развертыванием InnoDB ClusterSet.

Операция clusterSet.rejoinCluster() проверяет, соответствует ли целевой кластер этим требованиям:

  • Кластер ранее был членом ClusterSet.

  • Кластер имеет кворум (достаточно членов онлайн для формирования большинства).

  • Основной сервер кластера доступен.

  • В кластере не удерживаются блокировки метаданных или блокировки транзакций InnoDB.

  • Набор GTID кластера () не содержит дополнительных транзакций по сравнению с активными членами ClusterSet, за исключением событий изменения представления. Эти внутренние транзакции Group Replication идентифицируются UUID, заданным системной переменной, и процесс воссоединения кластера может их согласовать.

Если кластер соответствует этим требованиям, операция перезапускает канал репликации ClusterSet и удаляет состояние INVALIDATED. В противном случае необходимо устранить выявленные проблемы и повторить команду.

Следуйте этой процедуре для воссоединения InnoDB Cluster с 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:3310
    Creating a session to 'admin2@127.0.0.1:3310'
    Please provide the password for 'admin2@127.0.0.1:3310': ********
    Save password for 'admin2@127.0.0.1:3310'? [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 28
    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:3310>
    mysql-js> myclusterset = dba.getClusterSet()
    <ClusterSet:testclusterset>
    
  2. Проверьте состояние всего развертывания, используя функцию clusterSet.status() AdminAPI в MySQL Shell. Например:

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

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

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

    mysql-js> myclusterset.rejoinCluster('clustertwo')
    Rejoining cluster 'clustertwo' to the clusterset
    NOTE: Cluster 'clustertwo' is invalidated
    * Updating metadata
    
    * Rejoining cluster
    ** Changing replication source of 127.0.0.1:4420 to 127.0.0.1:3310
    ** Changing replication source of 127.0.0.1:4430 to 127.0.0.1:3310
    ** Changing replication source of 127.0.0.1:4410 to 127.0.0.1:3310
    
    Cluster 'clustertwo' was rejoined to the clusterset
    

    Для команды clusterSet.rejoinCluster():

    • Параметр clusterName обязателен и указывает идентификатор, используемый для кластера в InnoDB ClusterSet, как указано в выводе команды clusterSet.status(). В примере, clustertwo — имя воссоединяемого кластера.

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

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

    • Проверяет, реплицируется ли канал репликации ClusterSet с текущего основного кластера, и переконфигурирует его на это, если это не так.

    • Перезапускает канал репликации ClusterSet.

    • Очищает состояние INVALIDATED для кластера.

    Целевой кластер присоединяется к InnoDB ClusterSet как реплицирующий кластер, даже если ранее он был основным. Для преобразования целевого кластера в основной потребуется управляемая смена.

    Обратите внимание, что если у целевого кластера есть члены, которые не онлайн или недоступны при выполнении команды clusterSet.rejoinCluster(), эти члены не будут правильно сконфигурированы командой. Если в этих экземплярах больше нет необходимости, их можно удалить с помощью команды cluster.removeInstance(). Если вы восстановите эти экземпляры или вернёте их в онлайн-режим, повторите команду clusterSet.rejoinCluster() после возвращения этих членов в кластер.

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

  5. Если необходимо преобразовать воссоединенный кластер в основной, выполните команду clusterSet.setPrimaryCluster(), указав имя воссоединенного кластера. Раздел 8.8 «Управляемая смена InnoDB ClusterSet» содержит инструкции по процедуре, включая то, как направить экземпляры MySQL Router на отправку трафика в новый основной кластер.

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

Spec-Zone.ru

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