Spec-Zone.ru › MySQL Shell 8.4

9.3 Создание InnoDB ReplicaSet

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

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

  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-8.4-en/creating-a-replicaset.html

Spec-Zone.ru

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