Spec-Zone.ru › MySQL Shell 9.2

9.10.5 Присоединение кластера InnoDB к InnoDB ClusterSet

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

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

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

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

  • Первичный сервер кластера доступен.

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

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

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

Следуйте этой процедуре, чтобы присоединить кластер InnoDB к 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})
    

    Для объяснения вывода см. Раздел 9.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(), указав имя присоединившегося кластера. Раздел 9.8, «Управляемая смена первичного кластера InnoDB ClusterSet» содержит инструкции по процедуре, включая то, как направить экземпляры MySQL Router на отправку трафика в новый первичный кластер.

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

Spec-Zone.ru

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