Обновление EDTU эластичного пула через шаблон ARM

Изначально мы развернули эластичный пул базы данных в Azure через шаблон ARM. Пул в стандартной редакции и имел в общей сложности 50 EDTU. Это происходит при развертывании приложения из VSTS через управление выпусками.

В какой-то момент размер баз данных увеличился, поэтому нам пришлось увеличить EDTU пула, чтобы получить дополнительное пространство. Мы сделали это прямо с портала и не использовали развертывание с помощью шаблонов ARM. Мы увеличиваем EDTU до 100.

Проблема возникает сейчас, когда мы хотим повторно развернуть приложение через VSTS и использовать шаблон ARM. Мы обновляем значение в шаблоне ARM, чтобы оно соответствовало тому, которое мы настроили на портале (100), но мы получаем следующую ошибку.

DTU или ограничение хранилища для эластичного пула "имя пула" не может быть уменьшено, так как это не обеспечит достаточно места для хранения его баз данных. "

Наш ARM шаблон для пула похож на следующий

{
  "comments": "The elastic pool that hosts all the databases",
  "apiVersion": "2014-04-01-preview",
  "type": "elasticPools",
  "location": "[resourceGroup().location]",
  "dependsOn": ["[concat('Microsoft.Sql/Servers/', variables('sqlServerName'))]"],
  "name": "[variables('elasticPoolName')]",
  "properties": {
      "edition": "Standard",
      "dtu": "100",
      "databaseDtuMin": "0",
      "databaseDtuMax": "10",
   }
}

Сообщение носит описательный характер, но мы не понимаем, почему оно пытается уменьшить размер, даже если мы указали соответствующий размер через значение EDTU.

2 ответа

Мы частично определили, почему проблема происходит.

Как упомянуто здесь и особенно в документации необязательного аргумента StorageMB, лучше не указывать это и позволить Azure рассчитать размер.

Указывает лимит хранилища в мегабайтах для эластичного пула. Вы не можете указать значение этого параметра для версии Premium.

Если этот параметр не указан, этот командлет рассчитывает значение, которое зависит от значения параметра Dtu. Мы рекомендуем не указывать параметр StorageMB.

Как отмечалось в первом посте, мы не указали опцию StorageMB в шаблоне ARM, и это было установлено Azure. Что не упомянуто и не было понятно, так это то, что это происходит только в первый раз.

Поэтому при первом развертывании с 50 EDTU размер пула был установлен равным 50 ГБ. Когда мы снова развернем и установим EDTU на 100, размер останется на 50 ГБ, что сбивает с толку. Таким образом, решение и, возможно, более безопасный способ - всегда указывать опцию StorageMB для пула, чтобы лучше видеть и контролировать происходящее.

Я предполагаю, что текущий размер баз данных в пуле может быть больше, чем включенное хранилище данных, которое поставляется со стандартным пулом 100 eDTU. Объем включенного хранилища для этого размера составляет 100 ГБ. Объем хранилища - это метр, который можно настроить отдельно, чтобы у вас были пулы с меньшим объемом eDTU, но с большим объемом хранилища. Текущий максимальный объем памяти в пуле Standard 100 eDTU составляет 750 ГБ.

Интересно, кто-то зашел на портал и также настроил максимальный размер хранилища данных для пула. Если это так, и базы данных в пуле теперь превышают отметку в 100 ГБ, то эта ошибка, которую вы видите, имеет смысл. Поскольку в шаблоне не указан больший объем хранилища данных, я полагаю, что система по умолчанию устанавливает его в размере 100 ГБ и пытается применить его, который сейчас может быть слишком мал.

Я бы посоветовал проверить на портале общий размер хранилища, которое в данный момент используется базами данных в пуле. Если он превышает 100 ГБ, вам нужно обновить шаблон, чтобы также включить дополнительные настройки для максимального размера, который вы используете.

Если сейчас он не превышает 100 ГБ, я не уверен, на что он жалуется.

Другие вопросы по тегам