7.4.4 Добавление экземпляров в InnoDB кластер
Для обеспечения устойчивости к отказу одного экземпляра в InnoDB кластере необходимо не менее трех экземпляров. Добавление дополнительных экземпляров увеличивает устойчивость к отказам InnoDB кластера.
Группа репликации реализует политики совместимости, которые учитывают версию экземпляров, и операция обнаруживает это и в случае несовместимости операция завершается с ошибкой. См. Проверку версии MySQL на экземплярах и .Cluster.addInstance()
Используйте функцию для добавления экземпляра в кластер, где Cluster.addInstance(instance)instance — информация о подключении к настроенному экземпляру, см. Раздел 7.4.2 «Настройка производственных экземпляров для использования в InnoDB кластере». Например:
mysql-js> cluster.addInstance('icadmin@ic-2:3306')
A new instance will be added to the InnoDB cluster. Depending on the amount of
data on the cluster this might take from a few seconds to several hours.
Please provide the password for 'icadmin@ic-2:3306': ********
Adding instance to the cluster ...
Validating instance at ic-2:3306...
This instance reports its own address as ic-2
Instance configuration is suitable.
The instance 'icadmin@ic-2:3306' was successfully added to the cluster.
Словарь опций функции addInstance(instance[,
options]) предоставляет следующие атрибуты:
-
label: идентификатор добавляемого экземпляра.Метка должна быть непустой и не превышать 256 символов. Она должна быть уникальной в рамках кластера и может содержать только символы латинского алфавита, цифры, символ подчеркивания (_), точки (.), дефисы (-) или двоеточия (:).
recoveryMethod: Предпочтительный метод восстановления состояния. Может быть auto, clone или incremental. По умолчанию auto.-
recoveryProgress: Целочисленное значение, определяющее уровень детализации процесса восстановления.0: не отображать никакой информации о процессе.
1: отображать подробную статическую информацию о процессе.
2: отображать подробную динамическую информацию о процессе с помощью полос прогресса.
ipAllowlist: Список хостов, разрешенных для подключения к экземпляру для группы репликации.localAddress: Строковое значение с локальным адресом группы репликации, который будет использоваться вместо автоматически сгенерированного.exitStateAction: Строковое значение, указывающее действие при завершении работы группы репликации.memberWeight: Целочисленное значение с весом в процентах для автоматического выбора первичного экземпляра при отказе.autoRejoinTries: Целочисленное значение, определяющее количество попыток повторного подключения экземпляра к кластеру после исключения.
При добавлении нового экземпляра в кластер локальный адрес этого экземпляра автоматически добавляется в переменную на всех онлайн-экземплярах кластера, чтобы они могли использовать новый экземпляр для повторного подключения к группе, если это необходимо.
Экземпляры, перечисленные в используются в соответствии с порядком их появления в списке. Это гарантирует, что пользовательские настройки будут использоваться в первую очередь и будут предпочтительны. Подробнее см. Раздел 7.5.2 «Настройка узлов кластера InnoDB».
Если вы используете MySQL 8.0.17 или более позднюю версию, вы можете выбрать, как экземпляр восстановит транзакции, необходимые для синхронизации с кластером. Только после восстановления всеми экземплярами всех транзакций, ранее обработанных кластером, он может подключиться в качестве онлайн-экземпляра и начать обработку транзакций. Дополнительную информацию см. в Разделе 7.4.6 «Использование MySQL Clone с InnoDB кластером».
Вы можете настроить, как ведет себя , позволяя операциям восстановления продолжаться в фоновом режиме или отслеживая различные уровни прогресса в MySQL Shell.Cluster.addInstance()
В зависимости от выбранного метода восстановления экземпляра из кластера, в MySQL Shell отображается различный вывод. Предположим, что вы добавляете экземпляр ic-2 в кластер, а ic-1 — это семенной или донорский экземпляр.
-
При использовании MySQL Clone для восстановления экземпляра из кластера вывод выглядит следующим образом:
Validating instance at ic-2:3306... This instance reports its own address as ic-2:3306 Instance configuration is suitable. A new instance will be added to the InnoDB cluster. Depending on the amount of data on the cluster this might take from a few seconds to several hours. Adding instance to the cluster... Monitoring recovery process of the new cluster member. Press ^C to stop monitoring and let it continue in background. Clone based state recovery is now in progress. NOTE: A server restart is expected to happen as part of the clone process. If the server does not support the RESTART command or does not come back after a while, you may need to manually start it back. * Waiting for clone to finish... NOTE: ic-2:3306 is being cloned from ic-1:3306 ** Stage DROP DATA: Completed ** Clone Transfer FILE COPY ############################################################ 100% Completed PAGE COPY ############################################################ 100% Completed REDO COPY ############################################################ 100% Completed NOTE: ic-2:3306 is shutting down... * Waiting for server restart... ready * ic-2:3306 has restarted, waiting for clone to finish... ** Stage RESTART: Completed * Clone process has finished: 2.18 GB transferred in 7 sec (311.26 MB/s) State recovery already finished for 'ic-2:3306' The instance 'ic-2:3306' was successfully added to the cluster.
Следует обратить внимание на предупреждения о перезапуске сервера; возможно, вам придется вручную перезапустить экземпляр. См. .
-
При использовании инкрементного восстановления для восстановления экземпляра из кластера вывод выглядит следующим образом:
Incremental distributed state recovery is now in progress. * Waiting for incremental recovery to finish... NOTE: 'ic-2:3306' is being recovered from 'ic-1:3306' * Distributed recovery has finished
Для отмены отслеживания фазы восстановления введите CONTROL+C. Это останавливает отслеживание, но процесс восстановления продолжается в фоновом режиме. Целочисленная опция recoveryProgress может быть использована с операцией для отображения прогресса фазы восстановления.Cluster.addInstance()
Для проверки добавления экземпляра используйте функцию status() экземпляра кластера. Например, это вывод статуса тестового кластера после добавления второго экземпляра:
mysql-js> cluster.status()
{
"clusterName": "testCluster",
"defaultReplicaSet": {
"name": "default",
"primary": "ic-1:3306",
"ssl": "REQUIRED",
"status": "OK_NO_TOLERANCE",
"statusText": "Cluster is NOT tolerant to any failures.",
"topology": {
"ic-1:3306": {
"address": "ic-1:3306",
"mode": "R/W",
"readReplicas": {},
"role": "HA",
"status": "ONLINE"
},
"ic-2:3306": {
"address": "ic-2:3306",
"mode": "R/O",
"readReplicas": {},
"role": "HA",
"status": "ONLINE"
}
}
},
"groupInformationSourceMember": "mysql://icadmin@ic-1:3306"
}
Дальнейшие действия зависят от того, является ли экземпляр локальным или удалённым по отношению к экземпляру, на котором запущен MySQL Shell, а также от того, поддерживает ли экземпляр автоматическое сохранение изменений конфигурации. См. Раздел 6.2.3 «Сохранение настроек». Если экземпляр поддерживает автоматическое сохранение изменений конфигурации, вам не нужно вручную сохранять настройки, и вы можете добавить больше экземпляров или перейти к следующему шагу. Если экземпляр не поддерживает автоматическое сохранение изменений конфигурации, вам необходимо настроить его локально. Это необходимо для обеспечения того, чтобы экземпляры вновь подключались к кластеру в случае выхода из кластера.
Если у экземпляра есть , то, возможно, потребуется подтвердить, что AdminAPI может установить . Дополнительную информацию см. в Настройке экземпляра в режиме супер-только для чтения.
После развертывания кластера вы можете настроить MySQL Router для обеспечения высокой доступности, см. Раздел 6.10 «Использование MySQL Router с AdminAPI, InnoDB кластером и InnoDB ReplicaSet».
© 2025 Oracle
Licensed under the GPLv2 License.