Spec-Zone.ru › MySQL Shell 8.4

7.11.3 Изменение или удаление чтений реплик

В этом разделе описывается, как изменить или удалить чтение реплики из кластера.

  • Удаление чтений реплик

  • Присоединение чтений реплики к кластеру

  • Маршрутизация чтений реплик

Удаление чтений реплик

Чтобы удалить чтение реплики из кластера, используйте Cluster.removeInstance(). Эта операция выполняет следующие задачи:

  • Удаляет пользователя репликации из кластера.

  • Удаляет чтение реплики из метаданных кластера.

  • Останавливает канал репликации и сбрасывает конфигурацию чтения реплики до значений по умолчанию.

Примечание

Если Cluster.removeInstance() выполняется на узле кластера, который также является источником для чтения реплики, запускается процесс переключения, и чтение реплики пытается подключиться к другому источнику. Если доступен другой источник, канал репликации останавливается. Удаленный узел кластера также удаляется из списка источников чтения реплики.

В следующем примере удаляется чтение реплики host4:4110 из кластера:

Cluster.removeInstance("host4:4110")
Removing Read-Replica 'ipaddress:4110' from the Cluster 'myCluster'.

* Waiting for the Read-Replica to synchronize with the Cluster...
** Transactions replicated  ############################################################  100%

* Stopping and deleting the Read-Replica managed replication channel...

Read-Replica 'ipaddress:4110' successfully removed from the Cluster 'myCluster'.
      

При удалении чтения реплики транзакции синхронизируются с источником. Вы можете определить таймаут в секундах для процесса репликации транзакций. Например:

Cluster.removeInstance("host4:4110", {timeout:30})
      

Это определяет таймаут 30 секунд для процесса синхронизации. Если процесс синхронизации не завершится в течение 30 секунд, операция removeInstance отменяется, и чтение реплики не удаляется из кластера.

Значение таймаута по умолчанию равно 0 (ноль) или без таймаута.

Вы можете протестировать эту операцию, используя опцию dryRun. Включение этой опции, установленной на true, выполняет команду, но не вносит изменений. Это позволяет протестировать внесенные изменения.

Присоединение чтения реплики к кластеру

Чтобы присоединить чтение реплики к кластеру, используйте Cluster.rejoinInstance().

Cluster.rejoinInstance(instance [, options])
      

Для присоединения чтения реплики к кластеру экземпляр должен соответствовать следующим требованиям:

  • Целевой экземпляр должен быть членом кластера.

  • Целевой экземпляр должен соответствовать требованиям для чтения реплики. См. Раздел 7.11.1, “Предварительные требования”.

  • Множество GTID целевого экземпляра не должно отличаться от множества GTID кластера. Это не относится, если recoveryMethod: clone.

Примечание

Если все настроенные источники для чтения реплики недоступны или больше не являются частью кластера, операция rejoinInstance() завершится с ошибкой. В этом случае необходимо обновить источники репликации чтения реплики с помощью Cluster.setInstanceOption().

Этот процесс аналогичен присоединению узла кластера к кластеру, за исключением следующих моментов:

  • Значение recoveryMethod clone и опция cloneDonor доступны только для чтений реплик.

  • Опция timeout доступна только для чтений реплик.

Следующий пример показывает попытку присоединения чтения реплики host4:4110 к кластеру с использованием метода восстановления по умолчанию:

Cluster.rejoinInstance('host4:4110')
      

При присоединении чтения реплики транзакции синхронизируются с главным узлом. Вы можете определить таймаут в секундах для процесса репликации транзакций. Следующий пример устанавливает таймаут 60 секунд для процесса синхронизации транзакций:

Cluster.rejoinInstance('host4:4110', {timeout: 60})
      

Это определяет таймаут в 60 секунд для процесса синхронизации. Если процесс синхронизации не завершится в течение 60 секунд, операция rejoinInstance отменяется, и чтение реплики не присоединяется к кластеру.

Значение таймаута по умолчанию равно 0 (ноль) или без таймаута.

Вы можете протестировать эту операцию, используя опцию dryRun. Включение этой опции, установленной на true, выполняет команду, но не вносит изменений. Это позволяет протестировать внесенные изменения.

Примечание

Невозможно использовать rejoinInstance для присоединения чтения реплики, которое было удалено из кластера с помощью removeInstance. removeInstance удаляет чтение реплики из кластера и удаляет метаданные чтения реплики.

Чтобы присоединить такой экземпляр, необходимо использовать addReplicaInstance.

Маршрутизация чтений реплик

Политика маршрутизации по умолчанию для кластера направляет весь трафик только для чтения на вторичные узлы. Cluster.setRoutingOption() позволяет установить политику маршрутизации на одно из следующих значений с помощью опции read_only_targets:

  • all: используются все чтения реплик и вторичные узлы кластера для трафика только для чтения.

  • read_replicas: используются только чтения реплик для трафика только для чтения.

  • secondaries: используются только вторичные узлы кластера для трафика только для чтения.

Следующий пример устанавливает политику маршрутизации только для чтения для маршрутизатора под именем machine1::router1 на чтение реплик:

Cluster.setRoutingOption("machine1::router1", "read_only_targets", "read_replicas")
      

Чтобы просмотреть текущую политику маршрутизации маршрутизатора под именем machine1::router1, выполните следующее:

Cluster.routingOptions("machine1::router1")
      

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-shell-8.4-en/mysql-shell-read-replicas-modifying.html

Spec-Zone.ru

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