Spec-Zone.ru › MySQL Shell 9.2

7.7 Работа с маршрутизаторами кластера

Вы можете запустить несколько экземпляров MySQL Router для InnoDB Cluster или InnoDB ReplicaSet. Чтобы отобразить список всех зарегистрированных экземпляров MySQL Router, выполните:

Cluster.listRouters()

Результат предоставляет информацию о каждом зарегистрированном экземпляре MySQL Router, такую как его имя в метаданных, имя хоста, порты и так далее. Например, выполните следующую команду JavaScript:

mysql-js> Cluster.listRouters()
{
    "clusterName": "example",
    "routers": {
        "ic-1:3306": {
            "hostname": "ic-1:3306",
            "lastCheckIn": "2020-01-16 11:43:45",
            "roPort": 6447,
            "roXPort": 64470,
            "rwPort": 6446,
            "rwXPort": 64460,
            "version": "8.0.19"
        }
    }
}

Или следующую команду Python:

mysql-py> Cluster.list_routers()
{
    "clusterName": "example",
    "routers": {
        "ic-1:3306": {
            "hostname": "ic-1:3306",
            "lastCheckIn": "2020-01-16 11:43:45",
            "roPort": 6447,
            "roXPort": 64470,
            "rwPort": 6446,
            "rwXPort": 64460,
            "rwSplitPort": 6450,
            "version": "8.0.19"
        }
    }
}

Возвращаемая информация отображает:

  • Имя экземпляра MySQL Router.

  • Отметка времени последней проверки, которая генерируется периодическим пингом от MySQL Router, хранящимся в метаданных.

  • Имя хоста, на котором работает экземпляр MySQL Router.

  • Порты «Только чтение» (roPort) и «Чтение/запись» (rwPort), которые публикует MySQL Router для подключений по классическому протоколу MySQL.

  • Порты «Только чтение» (roXPort) и «Чтение/запись» (rwXPort), которые публикует MySQL Router для подключений по протоколу X.

  • Порты разделения «Чтение/запись» (rwSplitPort), которые MySQL Router публикует для разделенных подключений по классическому протоколу MySQL.

    См. Разделение чтение/запись.

  • Версия этого экземпляра MySQL Router. Если эта операция выполняется с экземпляром MySQL Router, более ранним, чем 8.0.19, поле версии имеет значение null.

Кроме того, операция Cluster.listRouters() может показать список экземпляров, которые не поддерживают версию метаданных, поддерживаемую MySQL Shell. Используйте параметр onlyUpgradeRequired. Например, выполнив Cluster.listRouters({'onlyUpgradeRequired':'true'}).

Возвращаемый список показывает только экземпляры MySQL Router, зарегистрированные с Cluster, которые требуют обновления метаданных. Дополнительную информацию см. в Разделе 6.10, «Обновление схемы метаданных».

Экземпляры MySQL Router не удаляются из метаданных автоматически, поэтому, по мере добавления новых экземпляров, метаданные InnoDB Cluster содержат всё больше ссылок на экземпляры. Для удаления зарегистрированного экземпляра MySQL Router из метаданных кластера используйте операцию Cluster.removeRouterMetadata(router).

Воспользуйтесь операцией Cluster.listRouters(), чтобы получить имя экземпляра MySQL Router, который требуется удалить, и передайте его в качестве router. Например, предположим, что экземпляры MySQL Router, зарегистрированные в кластере, были следующими:

mysql-js> Cluster.listRouters(){

    "clusterName": "testCluster",
    "routers": {
        "myRouter1": {
            "hostname": "example1.com",
            "lastCheckIn": null,
            "roPort": "6447",
            "rwPort": "6446"
            "version": null
        },
        "myRouter2": {
            "hostname": "example2.com",
            "lastCheckIn": "2019-11-27 16:25:00",
            "roPort": "6447",
            "rwPort": "6446"
            "version": "8.0.19"
        }
    }
}

Исходя из того, что экземпляр с именем «“myRouter1” имеет null для «“lastCheckIn” и «“version”, удалите этот старый экземпляр из метаданных, выполнив следующую команду JavaScript:

mysql-js> cluster.removeRouterMetadata('myRouter1')

Или, выполнив следующую команду Python:

mysql-py> cluster.remove_router_metadata('myRouter1')

Указанный экземпляр MySQL Router будет дезактивирован в кластере путем удаления его из метаданных InnoDB Cluster.

Просмотр конфигураций маршрутизаторов с помощью MySQL Shell

Начиная с MySQL Router 8.4.0, маршрутизаторы, запущенные в кластере, предоставляют свою конфигурацию в схеме метаданных InnoDB Cluster кластеров, к которым они подключены. Эту конфигурацию можно получить, используя операцию .routerOptions(), которая доступна для объектов Cluster, ClusterSet и ReplicaSet.

Примечание

Если у существующих учетных записей маршрутизаторов нет необходимых разрешений, информация о конфигурации не может быть записана в схему метаданных. MySQL Shell обнаруживает это и генерирует предупреждение. Необходимо убедиться, что у учетных записей маршрутизаторов есть правильные привилегии с помощью setupRouterAccount() и при необходимости запустить инициализацию вновь.

По умолчанию .routerOptions() позволяет получать глобальную конфигурацию, установленную для целевой топологии. Он перечисляет глобальные динамические конфигурации, которые можно настроить с помощью MySQL Shell. См. Раздел 7.4, «Параметры маршрутизации». Также перечисляются маршрутизаторы, настроенные с другими значениями конфигурации, отличными от глобального.

.routerOptions() имеет следующий синтаксис:

          cluster.routerOptions({options})
        

Доступны следующие параметры:

  • router: routerName

  • extended: 0 | 1 | 2:

    • 0: По умолчанию. Возвращает параметры динамической конфигурации MySQL Router.

    • 1: Возвращает все глобальные параметры для подключенных маршрутизаторов и перечень параметров каждого маршрутизатора, значения которых отличаются от глобального значения.

    • 2: Возвращает все параметры конфигурации для всех маршрутизаторов, подключенных к кластеру.

Следующий пример демонстрирует использование параметра по умолчанию для кластера с именем Cluster1, с одним маршрутизатором версии 8.4.0, с именем router_test:

$> cluster.routerOptions()
     {
          "clusterName": "Cluster1",
          "configuration": {
            "routing_rules": {
              "invalidated_cluster_policy": "drop_all",
              "read_only_targets": "secondaries",
              "stats_updates_frequency": -1,
              "tags": {},
              "unreachable_quorum_allowed_traffic": "none",
              "use_replica_primary_as_rw": false
            }
        },
        "routers": {
            "host1::router_test": {
                "configuration": {
                }
            }
        }
    }

        

Операция возвращает JSON-объект с именем целевой топологии, полученной глобальной конфигурацией и списком маршрутизаторов, принадлежащих данной топологии, и конфигурацией каждого из них.

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

Spec-Zone.ru

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