Настройка SQL Azure для пограничных вычислений

Важно!

Azure SQL Edge больше не поддерживает платформу ARM64.

SQL Azure для пограничных вычислений поддерживает настройку одним из следующих двух способов:

  • Переменные среды
  • Файл mssql.conf, помещенный в папку /var/opt/mssql

Примечание.

Задание переменных среды переопределяет параметры, указанные в файле mssql.conf.

Настройка с использованием переменных среды

SQL Azure для пограничных вычислений предоставляет несколько различных переменных среды, которые можно использовать для настройки контейнера SQL Azure для пограничных вычислений. Эти переменные среды являются подмножеством переменных среды, доступных для SQL Server на Linux. Дополнительные сведения о переменных среды SQL Server на Linux см. в разделе Переменные среды.

В SQL Azure для пограничных вычислений были добавлены следующие новые переменные среды.

Переменная среды Описание Values
PlanId Указывает номер SKU SQL Azure для пограничных вычислений, который будет использоваться во время инициализации. Эта переменная среды требуется только при развертывании SQL Azure для пограничных вычислений с помощью Azure IoT Edge. asde-developer-on-iot-edge или asde-premium-on-iot-edge
MSSQL_TELEMETRY_ENABLED Включение и отключение сбора данных об использовании и данных диагностики TRUE или FALSE
MSSQL_TELEMETRY_DIR Задает целевой каталог для файлов аудита сбора данных об использовании и диагностике. Расположение папки в контейнере SQL для пограничных вычислений. Эту папку можно сопоставить с томом узла с помощью точек подключения или томов данных.
MSSQL_PACKAGE Указывает расположение развертываемого пакета dacpac или bacpac. Папка, файл или URL-адрес SAS, содержащий пакеты dacpac или bacpac. Дополнительные сведения см. в статье "Развертывание База данных SQL пакетов DACPAC и BACPAC в SQL Edge".

Следующие переменные среды SQL Server на Linux не поддерживаются для SQL Azure для пограничных вычислений. При определении эта переменная среды игнорируется во время инициализации контейнера.

Переменная среды Description
MSSQL_ENABLE_HADR Включите группы доступности. Например, 1 включен и 0 отключен.

Важно!

Переменная среды MSSQL_PID для SQL Azure для пограничных вычислений допускает в качестве допустимых значений только Премиум и Разработка. SQL Azure для пограничных вычислений не поддерживает инициализацию с помощью ключа продукта.

Установка переменных среды

Укажите переменные среды для SQL для пограничных вычислений при развертывании службы с помощью портала Azure. Их можно добавить либо в разделе Переменные среды в развертывании модуля, либо в составе параметров создания контейнера.

Добавьте значения в Переменные среды.

Screenshot of set by using environment variables list.

Добавьте значения в Параметры создания контейнера.

Screenshot of set by using container create options.

Примечание.

В режиме отключенного развертывания переменные среды можно указать с помощью параметров -e, --env или --env-file команды docker run.

Настройка с помощью mssql.conf файла

SQL Azure для пограничных вычислений содержит программу настройки mssql-conf, например SQL Server на Linux. Необходимо вручную настроить файл mssql.conf и поместить его на постоянный диск хранилища, сопоставленный с папкой /var/opt/mssql/ в модуле SQL Azure для пограничных вычислений. При развертывании SQL для пограничных вычислений из Azure Marketplace это сопоставление указывается в качестве параметра Mounts (Подключить) в параметре Создать контейнер.

{
  "Mounts": [
    {
      "Type": "volume",
      "Source": "sqlvolume",
      "Target": "/var/opt/mssql"
    }
  ]
}

Следующие новые параметры mssql.conf были добавлены для SQL Azure для пограничных вычислений.

Параметр Описание
customerfeedback Выберите, нужно ли, чтобы SQL Server отправлял отзыв в корпорацию Майкрософт. Дополнительные сведения см. в разделе Отключение сбора данных об использовании и диагностике.
userrequestedlocalauditdirectory Задает целевой каталог для файлов аудита сбора данных об использовании и диагностике. Дополнительные сведения см. в разделе Локальный аудит использования и сбора диагностических данных.

Следующие параметры mssql.conf неприменимы к SQL Azure для пограничных вычислений.

Параметр Описание
Отзывы пользователей Выберите, нужно ли, чтобы SQL Server отправлял отзыв в корпорацию Майкрософт.
Профиль компонента Database Mail Настройка профиля Database Mail по умолчанию для SQL Server на Linux.
Высокая доступность Включение групп доступности.
Координатор распределенных транзакций Майкрософт Настройка координатора распределенных транзакций Майкрософт на платформе Linux. Дополнительные параметры конфигурации, связанные с распределенными транзакциями, не поддерживаются для SQL Azure для пограничных вычислений. Дополнительные сведения об этих дополнительных параметрах конфигурации см. в статье Настройка координатора распределенных транзакций.
Лицензионные соглашения служб ML Примите лицензионные соглашения для R и Python для пакетов службы "Машинное обучение Azure". Применимо только к SQL Server 2019.
outboundnetworkaccess Включение исходящего сетевого доступа для расширений R, Python и Java Службы машинного обучения.

Пример файла mssql.conf предназначен для SQL Azure для пограничных вычислений. Дополнительные сведения о формате mssql.conf файла см . в формате mssql.conf.

[EULA]
accepteula = Y

[coredump]
captureminiandfull = true
coredumptype = full

[filelocation]
defaultbackupdir = /var/opt/mssql/backup/
defaultdatadir = /var/opt/mssql/data/
defaultdumpdir = /var/opt/mssql/data/
defaultlogdir = /var/opt/mssql/log/

[language]
lcid = 1033

[memory]
memorylimitmb = 6144

[sqlagent]
errorlogfile = /var/opt/mssql/log/sqlagentlog.log
errorlogginglevel = 7

[traceflag]
traceflag0 = 3604
traceflag1 = 3605
traceflag2 = 1204

Запуск SQL Azure для пограничных вычислений от имени пользователя без прав root

По умолчанию контейнеры SQL Azure для пограничных вычислений работают с пользователем или группой без разрешений root. При развертывании через Azure Marketplace (или с помощью docker run), если не указан другой пользователь или группа, контейнеры SQL Edge запускаются как пользователь mssql (не корневой). Чтобы указать другого пользователя, не имеющего прав root, во время развертывания добавьте пару "ключ-значение" *"User": "<name|uid>[:<group|gid>]"* в параметрах создания контейнера. В следующем примере SQL Edge настроен на запуск от имени пользователя *IoTAdmin*.

{
    ..
    ..
    ..
    "User": "IoTAdmin",
    "Env": [
        "MSSQL_AGENT_ENABLED=TRUE",
        "ClientTransportType=AMQP_TCP_Only",
        "MSSQL_PID=Premium"
    ]
}

Чтобы разрешить непривилегированному пользователю доступ к файлам базы данных в подключенных томах, пользователь или группа, от имени которых выполняется контейнер, должны иметь доступ на чтение и запись для постоянного хранилища файлов. В следующем примере мы задали пользователя, не являющегося корневым, в user_id10001 качестве владельца файлов.

chown -R 10001:0 <database file dir>

Обновление с более ранних выпусков CTP

Предыдущие выпуски CTP для SQL Azure для пограничных вычислений настроены для запуска от имени пользователей с правами root. При обновлении с предыдущей версии CTP доступны следующие параметры.

  • Продолжайте использовать пользователя с правами root. Чтобы использовать этого пользователя дальше, добавьте пару "ключ-значение" *"User": "0:0"* в параметрах создания контейнера.

  • Используйте пользователя mssql по умолчанию. Чтобы использовать пользователя mssql по умолчанию, выполните следующие действия.

    • Добавьте пользователя с именем mssql на узле Docker. В приведенном ниже примере мы добавим пользователя mssql с идентификатором 10001. Этот пользователь также добавляется в группу root.

      sudo useradd -M -s /bin/bash -u 10001 -g 0 mssql
      
    • Изменение разрешения на том каталога или подключения, где находится файл базы данных

      sudo chgrp -R 0 /var/lib/docker/volumes/kafka_sqldata/
      sudo chmod -R g=u /var/lib/docker/volumes/kafka_sqldata/
      
  • Использование другой учетной записи пользователя, не имеющей прав root. Для использования другой учетной записи пользователя, без прав root, выполните следующие действия.

    • Обновите параметры создания контейнера, чтобы указать пару "ключ-значение" *"User": "user_name | user_id* в параметрах создания контейнера. Замените user_name или user_id фактическим user_name или user_id на узле Docker.
    • Измените разрешения для тома каталога или подключения.

Сохранение данных

Изменения в конфигурации SQL Azure для пограничных вычислений и файлы базы данных сохраняются в контейнере даже в том случае, если он был перезапущен с использованием команд docker stop и docker start. Тем не менее, если удалить контейнер с помощью команды docker rm, будет удалено все его содержимое, включая SQL Azure для пограничных вычислений и ваши базы данных. В следующем разделе описывается, как можно использовать тома данных для сохранения файлов базы данных даже в случае удаления связанных контейнеров.

Важно!

Для Пограничных вычислений SQL Azure важно понимать сохраняемость данных в Docker. Помимо этого раздела, мы также рекомендуем вам ознакомиться с информацией об управлении данными в контейнерах Docker в документации по Docker.

Подключение каталога узла в качестве тома данных

Первый способ состоит в подключении каталога на вашем узле в качестве тома данных для контейнера. Для этого используйте команду docker run с флагом -v <host directory>:/var/opt/mssql. Такой подход позволяет восстанавливать данные в перерывах между выполнениями контейнера.

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1433:1433 -v <host directory>/data:/var/opt/mssql/data -v <host directory>/log:/var/opt/mssql/log -v <host directory>/secrets:/var/opt/mssql/secrets -d mcr.microsoft.com/azure-sql-edge
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1433:1433 -v <host directory>/data:/var/opt/mssql/data -v <host directory>/log:/var/opt/mssql/log -v <host directory>/secrets:/var/opt/mssql/secrets -d mcr.microsoft.com/azure-sql-edge

Кроме того, этот способ позволяет предоставлять общий доступ к файлам на узле и просматривать их за пределами Docker.

Важно!

Сопоставление томов узла для Docker в Windows в настоящее время не поддерживает сопоставление полного /var/opt/mssql каталога. Однако можно сопоставить подкаталог, например /var/opt/mssql/data, с хост-компьютером.

Важно!

Сопоставление томов узла для Docker в macOS с образом SQL Azure SQL Edge в настоящее время не поддерживается. Вместо этого следует использовать контейнеры томов данных. Это ограничение относится только к каталогу /var/opt/mssql. Операции чтения из подключенного каталога осуществляются в нормальном режиме. Например, можно подключить каталог узла с помощью -v macOS и восстановить резервную копию из .bak файла, который находится на узле.

Использование контейнеров томов данных

Второй способ подразумевает использование контейнеров томов данных. Чтобы создать контейнер тома данных, укажите имя тома вместо каталога узла с параметром -v. В следующем примере создается общий том данных с именем sqlvolume.

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1433:1433 -v sqlvolume:/var/opt/mssql -d mcr.microsoft.com/azure-sql-edge
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1433:1433 -v sqlvolume:/var/opt/mssql -d mcr.microsoft.com/azure-sql-edge

Примечание.

Этот метод для неявного создания тома данных в команде выполнения не работает с более старыми версиями Docker. В таком случае следует явно выполнить действия, которые описываются в разделе Создание и подключение контейнера тома данных документации по Docker.

Даже если вы остановите и удалите этот контейнер, том данных будет сохранен. Вы сможете просмотреть его с помощью команды docker volume ls.

docker volume ls

Если затем создать другой контейнер с тем же именем тома, в новом контейнере будут использоваться данные SQL Azure для пограничных вычислений, располагающиеся на этом томе.

Чтобы удалить контейнер тома данных, воспользуйтесь командой docker volume rm.

Предупреждение

Если вы удалите контейнер тома данных, все содержащиеся в нем данные SQL Azure для пограничных вычислений будут удалены без возможности восстановления.

Следующие шаги