Spec-Zone.ru › MySQL Shell 8.4

7.4.4 Добавление экземпляров в InnoDB кластер

Для обеспечения устойчивости к отказу одного экземпляра в InnoDB кластере необходимо не менее трех экземпляров. Добавление дополнительных экземпляров увеличивает устойчивость к отказам InnoDB кластера.

Группа репликации реализует политики совместимости, которые учитывают версию экземпляров, и операция Cluster.addInstance() обнаруживает это и в случае несовместимости операция завершается с ошибкой. См. Проверку версии MySQL на экземплярах и .

Используйте функцию 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 кластером».

Вы можете настроить, как ведет себя Cluster.addInstance(), позволяя операциям восстановления продолжаться в фоновом режиме или отслеживая различные уровни прогресса в MySQL Shell.

В зависимости от выбранного метода восстановления экземпляра из кластера, в 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.
https://docs.oracle.com/cd/E17952_01/mysql-shell-8.4-en/add-instances-cluster.html

Spec-Zone.ru

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