6.10.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.
Кроме того, операция может отобразить список экземпляров, которые не поддерживают версию метаданных, поддерживаемую MySQL Shell. Используйте опцию Cluster.listRouters()onlyUpgradeRequired. Например, выполнив .Cluster.listRouters({'onlyUpgradeRequired':'true'})
Возвращаемый список показывает только экземпляры MySQL Router, зарегистрированные с Cluster, которые требуют обновления своих метаданных. Дополнительную информацию см. в разделе 6.11, «Схема обновления метаданных».
Экземпляры MySQL Router не удаляются автоматически из метаданных, поэтому, например, при запуске большего числа экземпляров метаданные InnoDB Cluster содержат растущее число ссылок на экземпляры. Чтобы удалить зарегистрированный экземпляр MySQL Router из метаданных кластера, используйте операцию .Cluster.removeRouterMetadata(router)
Используйте операцию , чтобы получить имя экземпляра MySQL Router, который вы хотите удалить, и передайте его как Cluster.listRouters()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. См. раздел 6.10.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.