8.10.5 Воссоединение кластера с InnoDB ClusterSet
Если InnoDB Cluster входит в развертывание InnoDB ClusterSet, MySQL Shell автоматически восстанавливает его роль в топологии сразу после перезагрузки, при условии, что он функционирует удовлетворительно и не был помечен как недействительный. Однако, если кластер помечен как недействительный или канал репликации ClusterSet остановлен, необходимо использовать операцию для его воссоединения с развертыванием InnoDB ClusterSet.clusterSet.rejoinCluster()
Операция проверяет, соответствует ли целевой кластер этим требованиям:clusterSet.rejoinCluster()
Кластер ранее был членом ClusterSet.
Кластер имеет кворум (достаточно членов онлайн для формирования большинства).
Основной сервер кластера доступен.
В кластере не удерживаются блокировки метаданных или блокировки транзакций InnoDB.
Набор GTID кластера () не содержит дополнительных транзакций по сравнению с активными членами ClusterSet, за исключением событий изменения представления. Эти внутренние транзакции Group Replication идентифицируются UUID, заданным системной переменной, и процесс воссоединения кластера может их согласовать.
Если кластер соответствует этим требованиям, операция перезапускает канал репликации ClusterSet и удаляет состояние INVALIDATED. В противном случае необходимо устранить выявленные проблемы и повторить команду.
Следуйте этой процедуре для воссоединения InnoDB Cluster с InnoDB ClusterSet:
-
Используя MySQL Shell, подключитесь к любому серверу-члену основного кластера или одному из реплицирующих кластеров, используя учетные данные администратора InnoDB Cluster (созданные с помощью
). Можно также использовать учетные данные конфигурации сервера InnoDB Cluster, у которых также есть необходимые права. После установления соединения получите объектcluster.setupAdminAccount()ClusterSetс помощью командыdba.getClusterSet()или. Важно использовать учетные данные администратора InnoDB Cluster или конфигурации сервера, чтобы у учетной записи пользователя по умолчанию, хранящейся в объектеcluster.getClusterSet()ClusterSet, были правильные разрешения. Например:mysql-js>
\connect admin2@127.0.0.1:3310Creating 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> -
Проверьте состояние всего развертывания, используя функцию
AdminAPI в MySQL Shell. Например:clusterSet.status()mysql-js>
myclusterset.status({extended: 1})Для объяснения вывода см. раздел 8.7 «Статус и топология InnoDB ClusterSet».
-
Выполните команду
, указав имя кластера, который необходимо воссоединить с InnoDB ClusterSet. Например:clusterSet.rejoinCluster()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, если хотите выполнить проверки и залогировать изменения без фактического их выполнения.
При выполнении команды
MySQL Shell проверяет, соответствует ли целевой кластер требованиям для воссоединения с ClusterSet, и возвращает ошибку, если нет. Если целевой кластер соответствует требованиям, MySQL Shell выполняет следующие задачи:clusterSet.rejoinCluster()Проверяет, реплицируется ли канал репликации ClusterSet с текущего основного кластера, и переконфигурирует его на это, если это не так.
Перезапускает канал репликации ClusterSet.
Очищает состояние
INVALIDATEDдля кластера.
Целевой кластер присоединяется к InnoDB ClusterSet как реплицирующий кластер, даже если ранее он был основным. Для преобразования целевого кластера в основной потребуется управляемая смена.
Обратите внимание, что если у целевого кластера есть члены, которые не онлайн или недоступны при выполнении команды
, эти члены не будут правильно сконфигурированы командой. Если в этих экземплярах больше нет необходимости, их можно удалить с помощью командыclusterSet.rejoinCluster(). Если вы восстановите эти экземпляры или вернёте их в онлайн-режим, повторите командуcluster.removeInstance()после возвращения этих членов в кластер.clusterSet.rejoinCluster() Выполните команду
снова, используя опциюclusterSet.status()extended, чтобы проверить состояние развертывания InnoDB ClusterSet.Если необходимо преобразовать воссоединенный кластер в основной, выполните команду
, указав имя воссоединенного кластера. Раздел 8.8 «Управляемая смена InnoDB ClusterSet» содержит инструкции по процедуре, включая то, как направить экземпляры MySQL Router на отправку трафика в новый основной кластер.clusterSet.setPrimaryCluster()
© 2025 Oracle
Licensed under the GPLv2 License.