Spec-Zone.ru › MySQL Shell 9.2

10.3 Создание InnoDB ReplicaSet

После настройки ваших экземпляров создайте InnoDB ReplicaSet, выполнив следующие шаги:

  1. Подключитесь к экземпляру и используйте 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 символов. Оно может начинаться только с буквенно-цифрового символа или символа _ (нижнего подчеркивания) и может содержать только буквенно-цифровые символы, _ (нижние подчеркивания), . (точки) или - (дефисы).

  2. Используйте возвращённый объект ReplicaSet, чтобы проверить, что операция прошла успешно. Например, это предоставляет операцию ReplicaSet.status(), которая отображает информацию о ReplicaSet. Возвращённый объект 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.
https://docs.oracle.com/cd/E17952_01/mysql-shell-9.2-en/creating-a-replicaset.html

Spec-Zone.ru

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