30.9.25

Интеграция SQL Server 2025 с S3

Автор: Anthony Nocentino, Setting up SQL Server S3 Object Storage Integration using MinIO with Docker Compose (Updated for SQL Server 2025)
Эта статья и репозиторий GitHub были обновлены для SQL Server 2025 RC1 и Ubuntu 24.04.
Новое в SQL Server 2025: Вам больше не нужно устанавливать службу PolyBase для работы с файлами Parquet в S3. Ранее, с SQL Server 2022, приходилось создавать пользовательский контейнер или вручную устанавливать PolyBase. Теперь интеграция с объектами S3 и поддержка Parquet работают прямо из коробки!

В этой статье блога я реализовал два примера использования интеграции SQL Server с S3. Одно для резервного копирования и восстановления в совместимое с S3 объектное хранилище, а другое для виртуализации данных с использованием подключения PolyBase к совместимому с S3 объектному хранилищу. Эта работа направлена на то, чтобы облегчить вам освоение этих новых возможностей. Я реализовал всё в Docker Compose, поскольку это продемонстрирует все необходимые шаги для реализации и настройки. Полный код для этого доступен в моём репозитории GitHub. В этой статье мы рассмотрим всё необходимое для реализации интеграции с S3 на практике.

Что нового

  • SQL Server 2025 RC1 и Ubuntu 24.04: Теперь можно использовать актуальный образ контейнера SQL Server.
  • Больше не требуется установка PolyBase для Parquet/S3: PolyBase больше не требуется устанавливать для интеграции Parquet/S3 в SQL Server 2025.
  • Улучшенная обработка сертификатов: Служба config генерирует SSL-сертификаты до запуска других служб, обеспечивая правильную последовательность и предотвращая ошибки монтирования.
  • Улучшения скрипта демонстрации резервного копирования: Скрипт backup/demo.sh теперь автоматизирует полный рабочий процесс резервного копирования, включая запуск окружения, создание базы данных, создание учётных данных S3, выполнение резервного копирования и очистку сгенерированных сертификатов.
  • Настройка PolyBase: Демонстрационный SQL-скрипт теперь включает PolyBase и расширенные параметры в начале, следуя лучшим практикам.
  • Согласованное именование: Имена служб и файлов были обновлены для ясности и согласованности.

Тестовое окружение для резервного копирования и восстановления

В каталоге backup вы найдёте скрипт demo.sh для запуска окружения и выполнения базового теста подключения с использованием резервного копирования SQL Server. Чтобы всё запустить, перейдите в каталог backup и выполните:

Как это работает

  1. Генерация сертификатов:
    Служба config создаёт контейнер, который генерирует необходимый SSL-сертификат и сохраняет его в ./certs на хосте.
  2. Служба MinIO:
    Служба minio1 запускает контейнер MinIO, открывая порты 9000 (данные) и 9001 (администрирование). Она монтирует сгенерированные сертификаты для TLS.
  3. Создание корзины:
    Служба createbucket использует клиент MinIO (mc) для создания пользователя и корзины (sqlbackups) для тестирования резервного копирования/восстановления.
  4. Служба SQL Server:
    Служба sql1 запускает SQL Server, монтируя публичный сертификат MinIO для доверенных TLS-соединений.
  5. Демонстрационный скрипт:
    Скрипт demo.sh:
    • Запускает окружение Docker Compose
    • Ждёт готовности SQL Server и проверяет подключение
    • Создаёт тестовую базу данных
    • Создаёт учётные данные S3 в SQL Server
    • Выполняет резервное копирование в корзину S3
    • (По желанию) Очищает сгенерированные сертификаты командой rm -rf ./certs

Пример использования

В demo.sh выполните каждую из этих строк по очереди, чтобы повторить демонстрацию:

Создайте базу данных:

CREATE DATABASE TESTDB1;

Создайте учётные данные S3:

CREATE CREDENTIAL [s3://s3.example.com:9000/sqlbackups] WITH IDENTITY = 'S3 Access Key', SECRET = 'anthony:nocentino';

Резервное копирование в S3:

BACKUP DATABASE TestDB1 TO URL = 's3://s3.example.com:9000/sqlbackups/TestDB1.bak' WITH COMPRESSION, STATS = 10, FORMAT, INIT;

Очистка:

docker compose down --rmi local --volumes
rm -rf ./certs

Окружение PolyBase и виртуализация данных S3

Далее идёт виртуализация данных. В каталоге datavirtualization этого репозитория есть скрипт demo.sh и демонстрационный SQL-скрипт demo.sql. Этот скрипт содержит команды, которые вам понадобятся для запуска окружения и выполнения базового теста подключения с использованием доступа на основе PolyBase к совместимому с S3 объектному хранилищу.

Что нового для SQL Server 2025

  • Установка PolyBase не требуется для Parquet/S3:
    Вам больше не нужно устанавливать службу PolyBase для работы с файлами Parquet в S3. Это значительное улучшение по сравнению с SQL Server 2022, где приходилось создавать пользовательский контейнер или вручную устанавливать PolyBase для включения этой функциональности.
  • Упрощённая настройка:
    Демонстрационный SQL-скрипт теперь включает PolyBase и расширенные параметры в начале, следуя лучшим практикам.

Как это работает

  1. Генерация сертификатов:
    Служба config генерирует SSL-сертификаты и размещает их в ./certs.
  2. Служба MinIO:
    Служба s3.example.com запускает MinIO со сгенерированными сертификатами.
  3. Настройка корзины и данных:
    Служба createbucket создаёт пользователя, корзину (sqldatavirt) и загружает тестовый CSV-файл.
  4. Служба SQL Server:
    Служба sql1 запускает SQL Server 2025 RC1, монтируя публичный сертификат MinIO для TLS.

Настройка PolyBase

Перед созданием внешних источников данных необходимо включить PolyBase. Скрипт demo.sql теперь включает:

USE master;
GO
sp_configure 'show advanced options', 1;
RECONFIGURE;
sp_configure 'polybase enabled', 1;
RECONFIGURE;
GO

Пример использования

  • Создайте базу данных и главный ключ
  • Создайте учётные данные в контексте базы данных для доступа к S3
  • Создайте внешний источник данных, ссылающийся на вашу корзину S3
  • Используйте OPENROWSET или создайте внешние таблицы для запроса данных в S3
  • Используйте CREATE EXTERNAL TABLE AS SELECT для создания и чтения файла parquet в S3

См. demo.sql для полного рабочего процесса.

Требования к памяти

Если вы сталкиваетесь с ошибками памяти при работе с PolyBase, увеличьте выделение памяти Docker до 4 ГБ.

Завершение работы

Когда закончите, можете использовать docker compose down --rmi local --volumes для очистки всех ресурсов, образов, сети и томов, содержащих базу данных и MinIO.

Дополнительные материалы


Комментариев нет:

Отправить комментарий