9.3 Создание InnoDB ReplicaSet
После настройки экземпляров создайте InnoDB ReplicaSet, выполнив следующие шаги:
-
Подключитесь к экземпляру и используйте
dba.createReplicaSet()для создания управляемого ReplicaSet, который использует асинхронную репликацию MySQL, а не Group Replication MySQL, используемую 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.