Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Решения
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Yandex Managed Service for MongoDB
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Миграция базы данных в Yandex.Cloud
    • Подключение к базе данных
    • Остановка и запуск кластера
    • Изменение настроек кластера и базы данных
    • Обновление версии MongoDB
    • Управление базами данных
    • Управление хостами кластера
    • Управление пользователями БД
    • Управление резервными копиями
    • Управление шардами
    • Удаление кластера
  • Сценарии использования
    • Шардирование коллекций
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
      • Действующие классы хостов
      • Архив
        • До 1 июня 2020 года
      • Использование устаревших классов хостов
    • Сеть в Managed Service for MongoDB
    • Квоты и лимиты
    • Типы хранилища
    • Резервные копии
    • Репликация
    • Шардирование
    • Пользователи и роли
    • Поддерживаемые клиенты
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • До 1 января 2019 года
      • С 1 января до 1 марта 2019 года
      • С 1 марта 2019 года до 1 февраля 2020 года
  • Справочник API
    • Аутентификация в API
    • gRPC
      • Обзор
      • BackupService
      • ClusterService
      • DatabaseService
      • ResourcePresetService
      • UserService
      • OperationService
    • REST
      • Обзор
      • Backup
        • Обзор
        • get
        • list
      • Cluster
        • Обзор
        • addHosts
        • addShard
        • backup
        • create
        • delete
        • deleteHosts
        • deleteShard
        • enableSharding
        • get
        • getShard
        • list
        • listBackups
        • listHosts
        • listLogs
        • listOperations
        • listShards
        • move
        • restore
        • start
        • stop
        • update
      • Database
        • Обзор
        • create
        • delete
        • get
        • list
      • ResourcePreset
        • Обзор
        • get
        • list
      • User
        • Обзор
        • create
        • delete
        • get
        • grantPermission
        • list
        • revokePermission
        • update
      • Operation
        • Обзор
        • get
  • Вопросы и ответы
    • Общие вопросы
    • Вопросы о MongoDB
    • Все вопросы на одной странице
  1. Пошаговые инструкции
  2. Создание кластера

Создание MongoDB-кластера

  • Примеры
    • Создание кластера с одним хостом

MongoDB-кластер — это один или несколько хостов базы данных, между которыми можно настроить репликацию. Репликация работает по умолчанию в любом кластере из более чем 1 хоста (первичный хост принимает запросы на запись и асинхронно дублирует изменения на вторичных хостах).

Количество хостов, которые можно создать вместе с MongoDB-кластером, зависит от выбранного варианта хранилища:

  • При использовании сетевых дисков вы можете запросить любое количество хостов (от 1 до пределов текущей квоты).
  • При использовании SSD-дисков вместе с кластером можно создать не меньше 3 реплик (минимум 3 реплики необходимо, чтобы обеспечить отказоустойчивость). Если после создания кластера доступных ресурсов каталога останется достаточно, вы можете добавить дополнительные реплики.

Примечание

Возможность создания кластеров с версией MongoDB 3.6 будет отключена в марте 2021 г. в связи с прекращением поддержки этой версии разработчиком.

В апреле 2021 г. все существующие кластеры с этой версией MongoDB будут принудительно обновлены до версии 4.0. Рекомендуем заранее перейти на использование актуальных версий MongoDB.

Консоль управления
CLI
Terraform
  1. В консоли управления выберите каталог, в котором нужно создать кластер БД.

  2. Выберите сервис Managed Service for MongoDB.

  3. Нажмите кнопку Создать кластер.

  4. Введите имя кластера в поле Имя кластера. Имя кластера должно быть уникальным в рамках каталога.

  5. Выберите окружение, в котором нужно создать кластер (после создания кластера окружение изменить невозможно):

    • PRODUCTION — для стабильных версий ваших приложений.
    • PRESTABLE — для тестирования, в том числе самого сервиса Managed Service for MongoDB. В Prestable-окружении раньше появляются новая функциональность, улучшения и исправления ошибок. При этом не все обновления обеспечивают обратную совместимость.
  6. Выберите версию СУБД.

  7. Выберите класс хостов — он определяет технические характеристики виртуальных машин, на которых будут развернуты хосты БД. При изменении класса хостов для кластера меняются характеристики всех уже созданных хостов.

  8. В блоке Размер хранилища:

    • Выберите тип хранилища — более гибкое сетевое (network-hdd или network-ssd) или более быстрое локальное хранилище (local-ssd). Размер локального хранилища можно менять только с шагом 100 ГБ.
    • Выберите объем, который будет использоваться для данных и резервных копий. Подробнее о том, как занимают пространство резервные копии, см. раздел Резервные копии.
  9. В блоке База данных укажите атрибуты БД:

    • Имя БД.
    • Имя пользователя.
    • Пароль пользователя. Минимум 8 символов.
  10. В блоке Хосты выберите параметры хостов БД, создаваемых вместе с кластером (помните, что используя SSD-диски при создании MongoDB-кластера можно задать не меньше 3 хостов). Открыв блок Расширенные настройки, вы можете выбрать конкретные подсети для каждого хоста — по умолчанию каждый хост создается в отдельной подсети.

  11. При необходимости задайте дополнительные настройки кластера:

    • Начало резервного копирования (UTC) — время по UTC, когда требуется начать резервное копирование кластера (в 24-часовом формате). Если время не задано, резервное копирование начнется в 22:00 UTC.

    • Срок хранения автоматических резервных копий, дней — время, в течение которого нужно хранить резервные копии, созданные автоматически. Если для какой-либо автоматической резервной копии истекает срок хранения, то она удаляется. Значение по умолчанию — 7 дней. Эта функциональность находится на стадии Preview. Подробнее см. в разделе Резервные копии.

    • Окно обслуживания — настройки окна технического обслуживания. С их помощью вы можете указать предпочтительное время начала проведения операций по техническому обслуживанию хостов кластера (например, можно выбрать время, когда кластер наименее нагружен запросами):

      • Чтобы указать предпочтительное время начала окна технического обслуживания, выберите пункт по расписанию и задайте нужные день недели и час дня в UTC (Coordinated Universal Time), выбрав значения из выпадающих списков.
      • Чтобы разрешить проведение операций технического обслуживания в любое время, выберите пункт произвольное.

      Операции по техническому обслуживанию могут включать в себя: обновление версии СУБД, применение патчей и так далее.

  12. При необходимости задайте дополнительные настройки СУБД:

    • Net → Max incoming connections — максимальное количество входящих соединений.

      Минимальное значение — 10, максимальное значение равно количеству мегабайт RAM на хосте, по умолчанию — 1024.

      Подробнее см. в документации MongoDB.

    • Operation profiling — настройки профилировщика СУБД. Профилировщик собирает данные о запросах. Затем на основе этих данных формируется стратегия оптимизации запросов.

      • Mode — режим работы профилировщика СУБД:

        • off — профилирование выключено;
        • slowOp (по умолчанию) — собирается информация только о медленных операциях (выполняющихся дольше порога, заданного настройкой Slow op threshold);
        • all — собирается информация обо всех выполняющихся запросах.

        Подробнее см. в документации MongoDB.

      • Slow op threshold — время выполнения операции (в миллисекундах), при превышении которого она будет считаться медленной.

        Минимальное значение — 0, максимальное значение — 36000000 (10 часов), значение по умолчанию — 300.

        Подробнее см. в документации MongoDB.

    • Storage — настройки взаимодействия MongoDB с хранилищем данных.

      • Journal → Commit interval — интервал в миллисекундах между сохранениями данных журнала MongoDB на диск.

        Минимальное значение — 1, максимальное значение — 500, значение по умолчанию — 300.

        Подробнее см. в документации MongoDB.

      • Wired tiger — настройки движка хранения данных:

        • Connection config → Block compressor — настройка сжатия данных. Установленное здесь значение будет работать только для новых коллекций. Также вы можете переопределить его для отдельных коллекций и индексов.

          • none — сжатие отключено.
          • snappy — использование библиотеки snappy для сжатия данных. При выборе этой настройки в большинстве случаев сжатие и распаковка будут быстрее, чем при использовании библиотеки zlib, но итоговый размер файлов будет на 20—100% больше.
          • zlib — использование библиотеки zlib для сжатия данных. Этот способ работает медленнее snappy, но в большинстве случаев лучше сжимает данные.

          Подробнее см. в документации MongoDB.

        • Engine config → Cache size gb — максимальный размер внутреннего кеша, используемого для хранения данных (в гигабайтах). Эта настройка не влияет на объем RAM, используемый для построения индекса.

          Минимальное значение — 0.25, максимальное значение — 90% от объема RAM на хосте, значение по умолчанию — 50% от объема RAM на хосте.

          Подробнее см. в документации MongoDB.

  13. Нажмите кнопку Создать кластер.

Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы создать кластер:

  1. Проверьте, есть ли в каталоге подсети для хостов кластера:

    $ yc vpc subnet list
    

    Если ни одной подсети в каталоге нет, создайте нужные подсети в сервисе VPC.

  2. Посмотрите описание команды CLI для создания кластера:

    $ yc managed-mongodb cluster create --help
    
  3. Укажите параметры кластера в команде создания (в примере приведены только обязательные флаги):

    $ yc managed-mongodb cluster create \
       --name <имя кластера> \
       --environment=<окружение, prestable или production> \
       --network-name <имя сети> \
       --host zone-id=<зона доступности>,subnet-id=<идентификатор подсети> \
       --mongod-resource-preset <класс хоста> \
       --user name=<имя пользователя>,password=<пароль пользователя> \
       --database name=<имя базы данных> \
       --mongod-disk-type <network-hdd | network-ssd | local-ssd> \
       --mongod-disk-size <размер хранилища в гигабайтах>
    

    Идентификатор подсети subnet-id необходимо указывать, если в выбранной зоне доступности создано 2 и больше подсетей.

Terraform позволяет быстро создать облачную инфраструктуру в Yandex.Cloud. Состав инфраструктуры определяется с помощью конфигурационных файлов, в которых указываются требуемые облачные ресурсы и их параметры.

Если у вас ещё нет Terraform, установите его и настройте провайдер.

Чтобы создать кластер:

  1. Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:

    • Кластер базы данных — описание кластера и его хостов.
    • Сеть — описание облачной сети, в которой будет расположен кластер. Если подходящая сеть у вас уже есть, описывать ее повторно не нужно.
    • Подсети — описание подсетей, к которым будут подключены хосты кластера. Если подходящие подсети у вас уже есть, описывать их повторно не нужно.

    Пример структуры конфигурационного файла:

    resource "yandex_mdb_mongodb_cluster" "<имя кластера>" {
      name        = "<имя кластера>"
      environment = "<окружение, PRESTABLE или PRODUCTION>"
      network_id  = "<идентификатор сети>"
    
      cluster_config {
        version = "версия MongoDB: 4.0, 4.2 или 4.4"
      }
    
      database {
        name = "<имя базы данных>"
      }
    
      user {
        name     = "<имя пользователя>"
        password = "<пароль пользователя>"
        permission {
          database_name = "<имя базы данных>"
        }
      }
    
      resources {
        resource_preset_id = "<класс хоста>"
        disk_type_id       = "<тип хранилища>"
        disk_size          = "<размер хранилища в гигабайтах>"
      }
    
      host {
        zone_id   = "<зона доступности>"
        subnet_id = "<идентификатор подсети>"
      }
    }
    
    resource "yandex_vpc_network" "<имя сети>" { name = "<имя сети>" }
    
    resource "yandex_vpc_subnet" "<имя подсети>" {
      name           = "<имя подсети>"
      zone           = "<зона доступности>"
      network_id     = "<идентификатор сети>"
      v4_cidr_blocks = ["<диапазон>"]
    }
    

    Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера.

  2. Проверьте корректность конфигурационных файлов.

    1. В командной строке перейдите в каталог, в котором создан конфигурационный файл.

    2. Выполните проверку с помощью команды:

      terraform plan
      

    Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет. Это проверочный этап: ресурсы не будут созданы.

  3. Создайте кластер.

    1. Если в конфигурации нет ошибок, выполните команду:

      terraform apply
      
    2. Подтвердите создание ресурсов.

    После этого в указанном каталоге будут созданы все требуемые ресурсы, а в терминале отобразятся IP-адреса виртуальных машин. Проверить появление ресурсов и их настройки можно в консоли управления.

Примеры

Создание кластера с одним хостом

CLI
Terraform

Чтобы создать кластер с одним хостом, следует передать один параметр --host.

Допустим, нужно создать MongoDB-кластер со следующими характеристиками:

  • С именем mymg.
  • В окружении production.
  • В сети default.
  • С одним хостом класса s2.micro в подсети b0rcctk2rvtr8efcch64, в зоне доступности ru-central1-c.
  • С быстрым сетевым хранилищем (network-ssd) объемом 20 ГБ.
  • С одним пользователем, user1, с паролем user1user1.
  • С одной базой данных, db1.

Запустите следующую команду:

$ yc managed-mongodb cluster create \
     --name mymg \
     --environment production \
     --network-name default \
     --mongod-resource-preset s2.micro \
     --host zone-id=ru-central1-c,subnet-id=b0rcctk2rvtr8efcch64 \
     --mongod-disk-size 20 \
     --mongod-disk-type network-ssd \
     --user name=user1,password=user1user1 \
     --database name=db1

Допустим, нужно создать MongoDB-кластер и сеть для него со следующими характеристиками:

  • С именем mymg.
  • Версии 4.4.
  • В окружении PRODUCTION.
  • В облаке с идентификатором b1gq90dgh25bebiu75o.
  • В каталоге myfolder.
  • В новой сети mynet.
  • С одним хостом класса s2.micro в новой подсети mysubnet, в зоне доступности ru-central1-c. Подсеть mysubnet будет иметь диапазон 10.5.0.0/24.
  • С быстрым сетевым хранилищем (network-ssd) объемом 20 ГБ.
  • С одним пользователем, user1, с паролем user1user1.
  • С одной базой данных, db1.

Конфигурационный файл для такого кластера выглядит так:

provider "yandex" {
  token     = "<OAuth или статический ключ сервисного аккаунта>"
  cloud_id  = "b1gq90dgh25bebiu75o"
  folder_id = "${data.yandex_resourcemanager_folder.myfolder.id}"
  zone      = "ru-central1-c"
}

resource "yandex_mdb_mongodb_cluster" "mymg" {
  name        = "mymg"
  environment = "PRODUCTION"
  network_id  = "${yandex_vpc_network.mynet.id}"

  cluster_config {
    version = "4.4"
  }

  database {
    name = "db1"
  }

  user {
    name     = "user1"
    password = "user1user1"
    permission {
      database_name = "db1"
    }
  }

  resources {
    resource_preset_id = "s2.micro"
    disk_type_id       = "network-ssd"
    disk_size          = 20
  }

  host {
    zone_id   = "ru-central1-c"
    subnet_id = "${yandex_vpc_subnet.mysubnet.id}"
  }
}

resource "yandex_vpc_network" "mynet" { name = "mynet" }

resource "yandex_vpc_subnet" "mysubnet" {
  name           = "mysubnet"
  zone           = "ru-central1-c"
  network_id     = "${yandex_vpc_network.mynet.id}"
  v4_cidr_blocks = ["10.5.0.0/24"]
}
Language
Вакансии
Политика конфиденциальности
Условия использования
© 2021 ООО «Яндекс.Облако»