7.11.2 Создание реплик чтения
Создайте реплики чтения с помощью addReplicaInstance():
Cluster.addReplicaInstance(instance, [options])
Примеры
Примеры в этом и последующих разделах предполагают простой кластер из трех экземпляров: один первичный и два вторичных.
host1:4100: первичный.host2:4101: вторичный.host3:4102: вторичный.
Реплика чтения по умолчанию
Этот раздел описывает добавление реплики чтения в кластер. По умолчанию реплика чтения дублирует данные с первичного экземпляра.
Следующий пример добавляет экземпляр host4:4110 в кластер с меткой RReplica1:
Cluster.addReplicaInstance('host4:4110', {label: 'RReplica1'})
Метки должны быть уникальными в пределах кластера и могут содержать только символы алфавитно-цифрового диапазона, _ (нижняя черта), . (точка), - (дефис) или : (двоеточие).
Определение источника репликации для реплики чтения
Опция replicationSources в addReplicaInstance позволяет указать один или несколько предпочитаемых источников репликации для реплики чтения. Эта опция принимает следующие значения:
primary: Определяет первичный экземпляр кластера в качестве источника репликации. В случае переключения экземпляра реплика чтения ждет, пока не будет выбран новый первичный экземпляр, а затем возобновляет репликацию с новым первичным экземпляром в качестве источника.secondary: Определяет один из вторичных экземпляров кластера в качестве источника репликации. Выбор выполняется механизмом Group Replication. Источник всегда будет вторичным членом кластера, если это не единственный член кластера. В этом случае реплика чтения использует единственный другой член в качестве источника.hostname:port: Определяет конкретного члена кластера (первичный или вторичный) в качестве источника репликации.Список хостов через запятую: Определяет взвешенный список членов кластера (первичный или вторичный) в качестве потенциальных источников репликации. Первый экземпляр в списке имеет наивысший приоритет; когда канал репликации реплики чтения активируется, происходит попытка подключения к нему. Другие члены списка подключаются при переключении или если попытка подключения к первому элементу неуспешна.
Следующий пример определяет вторичный экземпляр host2:4101 в качестве источника:
Cluster.addReplicaInstance('host4:4110', {label: 'RReplica1', replicationSources: ['host2:4101']})
Также возможно указать несколько источников репликации, указав список хостов через запятую в формате host:port. Список взвешен, причём первый элемент имеет наибольший вес. Это позволяет задать список резервных источников. Если первый определённый источник откажет, реплика чтения попытается восстановить репликацию со вторым определённым источником и так далее.
Следующий пример определяет вторичный экземпляр host2:4101 как первый источник и host3:4102 как следующий:
Cluster.addReplicaInstance('host4:4110', {label: 'RReplica1', replicationSources: ['host2:4101','host3:4102']]})
Вы можете использовать ту же опцию для определения только первичных или только вторичных источников, не определяя отдельные экземпляры. Например:
Cluster.addReplicaInstance('host4:4110', {label: 'RReplica1', replicationSources: 'secondary']})
определяет источники репликации только как вторичные. Чтобы определить источник репликации только как первичный, используйте replicationSources: 'primary'.
По умолчанию список источников управляется MySQL Group Replication, который по умолчанию использует первичные источники.
Вы можете протестировать эту операцию с помощью опции dryRun. Включение этой опции, установленной в true, выполняет команду, но не вносит изменений. Это позволяет протестировать внесённые изменения.
Также можно установить replicationSources и label реплики чтения с помощью метода .cluster.setInstanceOption()
Если целевым объектом является реплика чтения, метод принимает только опции cluster.setInstanceOption()tags (зарезервированные теги, только), replicationSources и label.
Определение метода восстановления для реплик чтения
recoveryMethod определяет, как приобретаются данные реплики чтения во время развертывания.
-
clone: Используется для полной замены состояния целевого экземпляра полным снимком другого члена кластера перед началом распределенного восстановления. Требуется MySQL 8.0.17 или более поздняя версия.Если
cloneDonorопределён, определённый экземпляр используется в качестве источника.Если
replicationSourcesустановлено вprimaryилиsecondary, первичный экземпляр кластера используется в качестве источника.Если
replicationSourcesсодержит один или несколько именованных членов кластера, первый из списка используется в качестве источника, если доступен. Если первый недоступен, используется второй и так далее. incremental: Использует распределенное восстановление состояния для применения пропущенных транзакций, скопированных с другого члена кластера. Клонирование отключено.auto: По умолчанию. Group Replication выбирает, делать ли полный снимок, исходя из того, что поддерживает целевой сервер и значение. Если определить безопасный способ продолжения не удаётся, отображается запрос. Если взаимодействие отключено, операция отменяется.
В дополнение к опции recoveryMethod: clone, addReplicaInstance предоставляет опцию cloneDonor, позволяющую определить конкретный экземпляр для клонирования на новую реплику чтения. Если cloneDonor не определён, но метод восстановления clone выбран, либо явно задан clone, либо auto выбрал клонирование в качестве лучшего метода для подготовки данных, кластер выбирает наилучший экземпляр для клонирования. Используется тот же процесс, что и при использовании . Дополнительную информацию см. в разделе разделе 7.4.6.1, «Работа с кластером, использующим MySQL Clone».Cluster.addInstance()
В следующем примере новая реплика чтения host5:4113 добавляется с меткой RReplica5, используя вторичный экземпляр host2:4101 в качестве источника данных. Данные из host2:4101 клонируются на новую реплику чтения.
JS> cluster.addReplicaInstance('host5:4113',{label: 'RReplica5', recoveryMethod: "clone", cloneDonor: "host2:4101"})
Успешная команда возвращает информацию, похожую на следующую:
Setting up 'host5:4113' as a Read Replica of Cluster 'myCluster'.
Validating instance configuration at host5:4113...
This instance reports its own address as host5:4113
Instance configuration is suitable.
* Checking transaction state of the instance...
Clone based recovery selected through the recoveryMethod option
* Waiting for the donor to synchronize with PRIMARY...
** Transactions replicated ############################################################ 100%
Monitoring Clone based state recovery of the new member. Press ^C to abort the operation.
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: host5:4113 is being cloned from host2:4101
** Stage DROP DATA: Completed
** Clone Transfer
FILE COPY ############################################################ 100% Completed
PAGE COPY ############################################################ 100% Completed
REDO COPY ============================================================ 0% In Progress
NOTE: host5:4113 is shutting down...
* Waiting for server restart... ready
* host5:4113 has restarted, waiting for clone to finish...
** Stage RESTART: Completed
* Clone process has finished: 8.64 GB transferred in 11 sec (785.30 MB/s)
* Configuring Read-Replica managed replication channel...
** Changing replication source of host5:4113 to host1:4100
* Waiting for Read-Replica 'host5:4113' to synchronize with Cluster...
** Transactions replicated ############################################################ 100%
'host5:4113' successfully added as a Read-Replica of Cluster 'myCluster'.
Аутентификация на основе сертификатов
Аутентификация на основе сертификатов для реплик чтения определяется следующим образом:
Опция
certSubjectв: указывает субъект сертификата экземпляра, используемый, еслиcluster.addReplicaInstance()memberAuthTypeкластера являетсяCERT_SUBJECTилиCERT_SUBJECT_PASSWORD.Значение
memberSslModeкластера используется для настройки типа аутентификации канала репликации реплики чтения.Метод выполняет проверку подключения с помощью настроенного
memberSslModeперед обновлением топологии.Если значение
memberAuthTypeкластера равноCERT_SUBJECTилиCERT_SUBJECT_PASSWORD, метод проверяет сертификат сервера.
было обновлено для возвращения cluster.options()certSubject в массиве topology.
© 2025 Oracle
Licensed under the GPLv2 License.