7.8.2 Создание и активация правил маршрутизации
Создайте правила маршрутизации, используя следующую команду:
object.create_routing_guideline(name[, json[, options]])
: кластер, набор кластеров или репликация, к которым относится правило маршрутизации.objectname: имя правила маршрутизации.-
json: (необязательно) JSON-документ, определяющий правило маршрутизации. Если JSON-документ не предоставлен, создается по умолчанию правило маршрутизации в соответствии с типом топологии. Если JSON-документ предоставлен, содержимое документа используется для определения правила маршрутизации. Параметр имени операции переопределяет имя, определенное в документе.См. Создание правила маршрутизации по умолчанию для кластера InnoDB.
options: возможно переопределение существующего правила маршрутизации с указанным именем, используя опциюforce.
Правила маршрутизации по умолчанию не устанавливаются активными в топологии. Чтобы установить правило маршрутизации как активное в топологии, необходимо сделать это вручную. См. Установка правила маршрутизации в активное состояние.
Создание правила маршрутизации по умолчанию для кластера InnoDB
Для создания правила маршрутизации по умолчанию для трехчленного кластера InnoDB подключитесь к первичному узлу кластера и выполните следующие команды:
-
Получить объект кластера:
cluster = dba.get_cluster() -
Создать правило маршрутизации, назвав его
default:rg = cluster.create_routing_guideline("default")
Правило маршрутизации по умолчанию определено для кластера и сохранено в схеме метаданных. Схема по умолчанию содержит следующие значения:
{
"destinations": [
{
"match": "$.server.memberRole = PRIMARY",
"name": "Primary"
},
{
"match": "$.server.memberRole = SECONDARY",
"name": "Secondary"
},
{
"match": "$.server.memberRole = READ_REPLICA",
"name": "ReadReplica"
}
],
"name": "default",
"routes": [
{
"connectionSharingAllowed": true,
"destinations": [
{
"classes": [
"Primary"
],
"priority": 0,
"strategy": "round-robin"
}
],
"enabled": true,
"match": "$.session.targetPort = $.router.port.rw",
"name": "rw"
},
{
"connectionSharingAllowed": true,
"destinations": [
{
"classes": [
"Secondary"
],
"priority": 0,
"strategy": "round-robin"
},
{
"classes": [
"Primary"
],
"priority": 1,
"strategy": "round-robin"
}
],
"enabled": true,
"match": "$.session.targetPort = $.router.port.ro",
"name": "ro"
}
],
"version": "1.0"
}
Установка правила маршрутизации в активное состояние
Для установки правила маршрутизации в качестве активного для кластера используйте следующее:
cluster.set_routing_option("guideline","nameOfRoutingGuideline")
Например, для правила с именем RG1:
cluster.routing_option("guideline","RG1")
Правило проверяется на совместимость с маршрутизаторами, связанными с кластером. Если какой-либо маршрутизатор несовместим с новым правилом, возвращается ошибка, содержащая список несовместимых маршрутизаторов. Если маршрутизаторы используют активное правило, которое переопределяет правило на уровне топологии.
Если опция router определена, правило активируется только для указанного маршрутизатора. Любой другой маршрутизатор, подключенный к топологии, продолжает использовать правило на уровне топологии, если оно существует.
Чтобы подтвердить, что маршрутизатор настроен на использование правила маршрутизации, запустите cluster.list_routers() для просмотра значения currentRoutingGuideline. Это также возвращает значения targetCluster и supportedRoutingGuidelinesVersion.
Получение активного правила маршрутизации
Для получения активного правила маршрутизации в топологии используйте следующее:
: чтобы проверить, какое правило маршрутизации в настоящее время активно в топологии.object.router_options(): чтобы получить правило.object.get_routing_guideline()
Удаление правил маршрутизации
Правила маршрутизации можно удалить из топологии, используя следующее:
object.remove_routing_guideline("name")
Следующий пример удаляет правило маршрутизации с именем RG1 из кластера:
cluster.remove_routing_guideline("RG1")
© 2025 Oracle
Licensed under the GPLv2 License.