10.3 Создание InnoDB ReplicaSet
После настройки ваших экземпляров создайте InnoDB ReplicaSet, выполнив следующие шаги:
-
Подключитесь к экземпляру и используйте
dba.createReplicaSet()для создания управляемого ReplicaSet, который использует асинхронную репликацию MySQL, а не репликацию MySQL Group Replication, используемую InnoDB Cluster. Экземпляр MySQL, к которому подключена MySQL Shell, используется в качестве начального первичного узла ReplicaSet.Операция
dba.createReplicaSet()выполняет несколько проверок, чтобы убедиться, что состояние и конфигурация экземпляра совместимы с управляемым ReplicaSet, и, если это так, инициализирует схему метаданных в экземпляре.Если ReplicaSet создан успешно, возвращается объект
ReplicaSet. Поэтому рекомендуется присвоить возвращённый объектReplicaSetпеременной. Это позволит работать с ReplicaSet, например, вызывая операцию<ReplicaSet>status(). Чтобы создать ReplicaSet с именемexampleна экземпляреrs-1и присвоить его переменнойrs, выполните:mysql-js>
\connect root@rs-1:3306... mysql-js>var rs = dba.createReplicaSet("example")A new replicaset with instance 'rs-1:3306' will be created. * Checking MySQL instance at rs-1:3306 This instance reports its own address as rs-1:3306 rs-1:3306: Instance configuration is suitable. * Updating metadata... ReplicaSet object successfully created for rs-1:3306. Use rs.addInstance() to add more asynchronously replicated instances to this replicaset and rs.status() to check its status.ПримечаниеИмя ReplicaSet должно быть не пустым и не длиннее 63 символов. Оно может начинаться только с буквенно-цифрового символа или символа _ (нижнего подчеркивания) и может содержать только буквенно-цифровые символы, _ (нижние подчеркивания), . (точки) или - (дефисы).
-
Используйте возвращённый объект
ReplicaSet, чтобы проверить, что операция прошла успешно. Например, это предоставляет операцию, которая отображает информацию о ReplicaSet. Возвращённый объектReplicaSet.status()ReplicaSetуже присвоен переменнойrs, поэтому выполните:mysql-js>
rs.status(){ "replicaSet": { "name": "example", "primary": "rs-1:3306", "status": "AVAILABLE", "statusText": "All instances available.", "topology": { "rs-1:3306": { "address": "rs-1:3306", "instanceRole": "PRIMARY", "mode": "R/W", "status": "ONLINE" } }, "type": "ASYNC" } }Этот вывод показывает, что ReplicaSet с именем
exampleбыл создан, и что первичный узел —rs-1. В настоящее время существует только один экземпляр, и следующая задача — добавить больше экземпляров в ReplicaSet.
Шифрование и аутентификация ReplicaSet
Реплики могут проверять идентификатор источника и использовать сертификаты SSL клиентов для аутентификации. Следующие параметры были добавлены в dba.createReplicaSet:
-
memberAuthType: определяет тип аутентификации, используемый для внутренних учётных записей репликации. Этот параметр принимает одно из следующих значений:PASSWORD: Учётная запись аутентифицируется только по паролю.CERT_ISSUER: Учётная запись аутентифицируется с помощью сертификата клиента, который должен соответствовать ожидаемому издателю. Это значение эквивалентноVERIFY_CA.CERT_SUBJECT: Учётная запись аутентифицируется с помощью сертификата клиента, который должен соответствовать ожидаемому издателю и субъекту. Это значение эквивалентноVERIFY_IDENTITY.CERT_ISSUER_PASSWORD: Учётная запись аутентифицируется с помощью комбинации значенийPASSWORDиCERT_ISSUER.CERT_SUBJECT_PASSWORD: Учётная запись аутентифицируется с помощью комбинации значенийPASSWORDиCERT_SUBJECT.
certIssuer: Определяет требуемого издателя сертификата для аутентификации, еслиmemberAuthTypeсодержитCERT_ISSUERилиCERT_SUBJECT.certSubject: Определяет субъект сертификата экземпляра. Требуется, еслиmemberAuthTypeсодержитCERT_SUBJECT.-
replicationSslMode: Определяет тип аутентификации каналов репликации в ReplicaSet. Этот параметр принимает одно из следующих значений:DISABLED: Шифрование TLS отключено для канала репликации.REQUIRED: Шифрование TLS включено для канала репликации.VERIFY_CA: То же, что и REQUIRED, но дополнительно проверяет сертификат TLS сервера-партнёра по настроенным сертификатам Центра сертификации (CA).VERIFY_IDENTITY: То же, что и VERIFY_CA, но дополнительно проверяет, что сертификат сервера-партнёра соответствует хосту, к которому пытается подключиться.AUTO: Шифрование TLS включено, если поддерживается экземпляром. Отключено, если экземпляр не поддерживает TLS.
Например:
mysql-js> myreplicaset = dba.createReplicaSet("replicaSet1",
{ "replicationSslMode": "VERIFY_IDENTITY", "memberAuthType":"CERT_SUBJECT",
"certIssuer":"/CN=MyCertAuthority", "certSubject": "/CN=mysql-5.local"});
Все новые каналы репликации создаются с включенным SSL.
InnoDB ReplicaSet replicationAllowedHost
При создании InnoDB ReplicaSet, если у вас есть требования безопасности, требующие, чтобы все учётные записи, созданные автоматически AdminAPI, имели строгие требования к аутентификации, можно установить значение для параметра конфигурации replicationAllowedHost ReplicaSet. Параметр MySQL Shell replicationAllowedHost позволяет установить для управляемых внутри репликационных учётных записей ReplicaSet фильтр по строгому подсети, а не по значению по умолчанию с подстановкой %. Параметр replicationAllowedHost может принимать строковое значение. Например, чтобы установить replicationAllowedHost на 192.0.2.0/24, выполните:
mysql-js> var rs = dba.createReplicaSet('example', {replicationAllowedHost:'192.0.2.0/24'})
A new replicaset with instance 'rs-1:3306' will be created.
* Checking MySQL instance at rs-1:3306
This instance reports its own address as rs-1:3306
rs-1:3306: Instance configuration is suitable.
* Updating metadata...
ReplicaSet object successfully created for rs-1:3306.
Use rs.addInstance() to add more asynchronously replicated instances to this replicaset
and rs.status() to check its status.
InnoDB ReplicaSet можно изменить после создания, чтобы установить переменную replicationAllowedHost через параметр конфигурации setOption, выполнив:
mysql-js> rs.setOption('replicationAllowedHost', '192.0.2.0/24')
© 2025 Oracle
Licensed under the GPLv2 License.