Spec-Zone.ru › MySQL Shell 8.4

7.8.2 Восстановление кластера после потери кворума

Если один или несколько экземпляров откажут, кластер может потерять кворум, то есть способность голосовать за нового первичного экземпляра. Это может произойти, когда откажет достаточно экземпляров, чтобы не было больше большинства экземпляров, составляющих кластер, для голосования по операциям Group Replication. См. . Когда кластер теряет кворум, вы больше не можете обрабатывать транзакции записи с кластером или изменять топологию кластера, например, добавляя, присоединяя или удаляя экземпляры. Однако если у вас есть работающий экземпляр, содержащий метаданные InnoDB Cluster, возможно восстановить кластер с кворумом. Это предполагает, что вы можете подключиться к экземпляру, содержащему метаданные InnoDB Cluster, и этот экземпляр может связаться с другими экземплярами, которые вы хотите использовать для восстановления кластера.

Важно

Эта операция потенциально опасна, потому что при неправильном использовании она может создать ситуацию раздвоения мозга (split-brain) и должна рассматриваться как крайняя мера. Убедитесь, что в сети нет разделенных частей этой группы, которые работают, но недоступны из вашего местоположения.

Подключитесь к экземпляру, который содержит метаданные кластера, затем используйте операцию Cluster.forceQuorumUsingPartitionOf(instance), которая восстанавливает кластер на основе метаданных на instance, а затем все экземпляры, которые являются ONLINE с точки зрения данного определения экземпляра, добавляются в восстановленный кластер.

mysql-js> cluster.forceQuorumUsingPartitionOf("icadmin@ic-1:3306")

  Restoring replicaset 'default' from loss of quorum, by using the partition composed of [icadmin@ic-1:3306]

  Please provide the password for 'icadmin@ic-1:3306': ******
  Restoring the InnoDB cluster ...

  The InnoDB cluster was successfully restored using the partition from the instance 'icadmin@ic-1:3306'.

  WARNING: To avoid a split-brain scenario, ensure that all other members of the replicaset
  are removed or joined back to the group that was restored.

В случае, если экземпляр не добавляется автоматически в кластер, например, если его настройки не были сохранены, используйте Cluster.rejoinInstance() для ручного добавления экземпляра обратно в кластер.

Восстановленный кластер может и не должен состоять из всех оригинальных экземпляров, которые составляли кластер. Например, если исходный кластер состоял из следующих пяти экземпляров:

  • ic-1

  • ic-2

  • ic-3

  • ic-4

  • ic-5

и кластер переживает ситуацию раздвоения мозга, где ic-1, ic-2 и ic-3 образуют одну часть, а ic-4 и ic-5 образуют другую часть. Если вы подключитесь к ic-1 и выполните Cluster.forceQuorumUsingPartitionOf('icadmin@ic-1:3306') для восстановления кластера, получившийся кластер будет состоять из этих трех экземпляров:

  • ic-1

  • ic-2

  • ic-3

потому что ic-1 видит ic-2 и ic-3 как ONLINE и не видит ic-4 и ic-5.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-shell-8.4-en/restore-cluster-from-quorum-loss.html

Spec-Zone.ru

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