Основные сведения о доступности SQL Server для развертываний Linux

Применимо к:SQL Server в Linux

Начиная с SQL Server 2017 (14.x), SQL Server поддерживается как в Linux, так и в Windows. Как и развертывания SQL Server на базе Windows, базы данных и экземпляры SQL Server должны быть высокодоступными в Linux.

В этой статье рассматриваются технические аспекты планирования и развертывания экземпляров и баз данных SQL Server на основе Linux, а также основные отличия от установок под управлением Windows. Так как SQL Server или Linux могут быть новыми для вас, в этой статье рассматриваются понятия, которые уже знакомы с вами.

Параметры доступности SQL Server для развертываний Linux

Помимо резервного копирования и восстановления, в Linux поддерживаются те же три компонента доступности, что и в развертываниях на основе Windows.

В Windows экземпляры FCI всегда требуют базового отказоустойчивого кластера Windows Server (WSFC). В зависимости от сценария развертывания для группы доступности (AG) обычно необходим базовый кластер WSFC, за исключением нового варианта None в SQL Server 2017 (14.x). WSFC не существует в Linux. Реализация кластеризации в Linux обсуждается в Pacemaker для групп доступности и экземпляров отказоустойчивого кластера в Linux.

Краткое руководство по Linux

Хотя некоторые установки Linux включают интерфейс, большинство из них не делают. Командная строка используется почти для всего на уровне операционной системы. Общим термином для этой командной строки в мире Linux является оболочка, наиболее распространенная.bash

В Linux требуются повышенные привилегии для выполнения многих команд, аналогичных нуждающимся в привилегиях администратора в Windows Server. Команды можно выполнять с повышенными привилегиями двумя способами:

  1. Выполните команду в качестве соответствующего пользователя. Чтобы изменить другого пользователя, используйте su команду. Если вы запускаете su без имени пользователя, вы входите в оболочку как root, если вы знаете пароль.

  2. Используйте sudo перед командой. Этот метод является более распространенным и более безопасным. Во многих примерах в этой статье используется sudo.

Ниже приведены некоторые распространенные команды. Каждая команда имеет различные параметры и опции, которые можно изучить в Интернете.

  • cd — изменение каталога
  • chmod — изменение разрешений для файла или каталога
  • chown — изменение владельца файла или каталога
  • ls — отображение содержимого каталога
  • mkdir — создание папки (каталога) на диске
  • mv — перемещение файла из одного места в другое
  • ps — отображение всех рабочих процессов
  • rm — удаление файла локально на сервере
  • rmdir — удаление папки (каталога)
  • systemctl — запуск, остановка или включение служб
  • Команды текстового редактора. В Linux существуют различные параметры текстового редактора, например vi и emacs.

Общие задачи для конфигураций доступности SQL Server на Linux

В этом разделе рассматриваются задачи, которые являются общими для всех развертываний SQL Server под управлением Linux.

Убедитесь, что можно копировать файлы

Любой, кто управляет SQL Server в Linux, должен иметь возможность копировать файлы с одного сервера на другой. Эта задача ключевая для конфигураций AG.

Проблемы с разрешениями могут существовать как в установках Linux, так и на основе Windows. Однако пользователи Windows, знакомые с тем, как копировать файлы с сервера на сервер, могут не знать, как это делается в Linux. Распространенный метод — использовать служебную программу командной строки scp, что обозначает безопасную копию. В фоновом режиме scp использует OpenSSH. SSH означает безопасную оболочку. В зависимости от дистрибутива Linux сам OpenSSH может быть не установлен. Если это не так, необходимо установить OpenSSH.

Дополнительные сведения о настройке OpenSSH для дистрибутива Linux см. в следующем разделе:

Note

Начиная с SQL Server 2025 (17.x), SUSE Linux Enterprise Server (SLES) не поддерживается.

При использовании scpнеобходимо указать учетные данные сервера, если он не является источником или назначением. Например, следующая команда копирует файл MyAGCert.cer в папку, указанную на другом сервере:

scp MyAGCert.cer username@servername:/folder/subfolder

Для копирования файла необходимо иметь разрешения и, возможно, права владения им, поэтому может потребоваться сначала использовать chown. Кроме того, на принимающей стороне работать с файлом должен пользователь с надлежащими правами. Например, чтобы восстановить этот файл сертификата, пользователь mssql должен иметь к нему доступ.

Создавать общие ресурсы, доступ к которым осуществляется по UNC-путям, таким как \\SERVERNAME\SHARE, можно с помощью Samba, который является разновидностью протокола SMB в Linux. Дополнительные сведения о настройке Samba см. по следующим ссылкам для каждого дистрибутива:

Note

Начиная с SQL Server 2025 (17.x), SUSE Linux Enterprise Server (SLES) не поддерживается.

Вы также можете использовать общие папки SMB на основе Windows. Общие папки SMB не обязательно должны базироваться на Linux, если клиентская часть Samba настроена корректно на сервере Linux, на котором размещен SQL Server, и общий ресурс обладает корректными правами доступа. Для клиентов в смешанной среде этот подход позволяет использовать существующую инфраструктуру для развертываний SQL Server на основе Linux.

Версия Samba, которую вы развертываете, должна быть совместимой с SMB 3.0. При добавлении поддержки SMB в SQL Server 2012 (11.x) все общие папки должны поддерживать SMB 3.0. Если вы используете Samba для общей папки, а не Windows Server, общая папка на основе Samba должна использовать Samba 4.0 или более поздней версии, а в идеале — 4.3 или более поздней версии, которая поддерживает SMB 3.1.1. Хорошим источником информации об SMB и Linux является SMB3 in Samba.

Кроме того, можно использовать общий ресурс сетевой файловой системы (NFS). Вы не можете использовать NFS в развертываниях SQL Server на основе Windows, и его можно использовать только для развертываний на основе Linux.

Настройка брандмауэра

Как и в Windows, дистрибутивы Linux имеют встроенный брандмауэр. Если ваша организация использует внешний брандмауэр для серверов, вы можете отключить брандмауэры в Linux. Однако независимо от того, где включен брандмауэр, необходимо открыть порты. В следующей таблице перечислены общие порты, необходимые для высокодоступных развертываний SQL Server в Linux.

Номер порта Type Description
111 TCP/UDP NFS — rpcbind/sunrpc
135 Протокол tcp Samba (если используется) — сопоставитель конечных точек
137 UDP Samba (если используется) — служба имен NetBIOS
138 UDP Samba (если используется) — датаграмма NetBIOS
139 Протокол tcp Samba (если используется) — сеанс NetBIOS
445 Протокол tcp Samba (если используется) — SMB по TCP
1433 Протокол tcp SQL Server — порт по умолчанию; При желании может измениться с помощью mssql-conf set network.tcpport <portnumber>
2049 TCP, UDP; NFS (если используется)
2224 Протокол tcp Pacemaker — используется pcsd
3121 Протокол tcp Pacemaker — требуется, если имеются узлы Pacemaker Remote
3260 Протокол tcp Инициатор iSCSI (если используется) — может быть изменен в /etc/iscsi/iscsid.config (RHEL), но должен соответствовать порту целевого объекта iSCSI.
5022 Протокол tcp SQL Server — порт по умолчанию, используемый для конечной точки AG; его можно изменить при создании конечной точки
5403 Протокол tcp Кардиостимулятор
5404 UDP Pacemaker — требуется для Corosync при использовании многоадресного протокола UDP
5405 UDP Pacemaker — требуется для Corosync
21064 Протокол tcp Pacemaker — требуется для ресурсов, использующих DLM
Variable Протокол tcp Порт конечной точки AG; значение по умолчанию — 5022
Variable Протокол tcp NFS — порт для LOCKD_TCPPORT (находится в /etc/sysconfig/nfs в RHEL)
Variable UDP NFS — порт для LOCKD_UDPPORT (находится в /etc/sysconfig/nfs в RHEL)
Variable TCP/UDP NFS — порт для MOUNTD_PORT (находится в /etc/sysconfig/nfs в RHEL)
Variable TCP/UDP NFS — порт для STATD_PORT (находится в /etc/sysconfig/nfs в RHEL)

Сведения о других портах, используемых Samba, см. в разделе "Использование портов Samba".

И наоборот, можно добавить имя службы в Linux как исключение вместо порта. Например, используйте high-availability для кардиостимулятора. Обратитесь к вашей версии или пакету программного обеспечения за соответствующими именами. Например, в RHEL команда для добавления в Pacemaker:

sudo firewall-cmd --permanent --add-service=high-availability

Документация по брандмауэру

Note

Начиная с SQL Server 2025 (17.x), SUSE Linux Enterprise Server (SLES) не поддерживается.

Установите пакеты SQL Server для обеспечения доступности

При установке SQL Server под управлением Windows некоторые компоненты устанавливаются даже в базовой установке ядра, а другие — нет. В Linux в процессе установки устанавливается только подсистема SQL Server. Все остальное является необязательным. Для экземпляров SQL Server с высоким уровнем доступности в Linux необходимо установить два пакета с SQL Server:

  • агент SQL Server (mssql-server-agent)
  • пакет высокого уровня доступности (HA) (mssql-server-ha)

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

В SQL Server 2017 (14.x) с CU 4 и более поздних версий Агент SQL Server входит в состав пакета ядра СУБД, но его все равно необходимо включить. В установках под управлением Windows агент SQL Server не является необязательным.

Note

Агент SQL Server — это встроенный планировщик заданий для SQL Server. Он используется для планирования таких задач, как резервное копирование и регулярное обслуживание. В Windows агент SQL Server выполняется как отдельная служба. В Linux он выполняется в контексте самого SQL Server.

При настройке AG или FCI в конфигурации под управлением Windows они поддерживают кластеры. Осведомлённость о кластере означает, что SQL Server имеет определённые библиотеки DLL ресурсов, о которых известно WSFC (sqagtres.dll и sqsrvres.dll для отказоустойчивых кластерных экземпляров, hadrres.dll для групп доступности) и которые используются WSFC, чтобы гарантировать, что кластерные функции SQL Server запущены, работают и функционируют должным образом.

Поскольку кластеризация реализована вне не только SQL Server, но и самой ОС Linux, корпорации Майкрософт пришлось разработать эквивалент библиотеки ресурсов DLL для развертываний групп доступности (AG) и отказоустойчивых кластерных экземпляров (FCI) в Linux. Этот ресурс является пакетом mssql-server-ha , также известным как агент ресурсов SQL Server для Pacemaker. Чтобы установить mssql-server-ha пакет, см. раздел "Развертывание кластера Pacemaker для SQL Server на Linux".

В Linux полнотекстовый поиск (mssql-server-fts) и службы Integration Services (mssql-server-is) являются необязательными пакетами SQL Server и не требуются для FCI или групп доступности.

Партнеры в области высокой доступности и аварийного восстановления SQL Server

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

Partner Description
DH2i DxEnterprise — это решение для управления доступностью для сред Windows, Linux и контейнеров. Она поддерживает высокий уровень доступности, сокращает запланированное и незапланированное время простоя и упрощает управление физическими и логическими ресурсами.

- Развертывание групп доступности с помощью DH2i DxEnterprise в Kubernetes
- Руководство: Настройка трёхузловой группы доступности Always On с помощью DH2i DxEnterprise
HPE Serviceguard HPE SGLX предлагает контекстно-зависимые возможности мониторинга и восстановления для экземпляров отказоустойчивого кластера и групп доступности Always On. С помощью HPE SGLX вы можете обеспечить максимальное время доступности, не жертвуя целостностью данных и производительностью.

- Руководство. Настройка группы доступности AlwaysOn с помощью HPE Serviceguard для Linux с тремя узлами.
Кардиостимулятор Pacemaker — это менеджер ресурсов кластера высокой доступности с открытым исходным кодом. С помощью Corosync, системы групповой коммуникации с открытым исходным кодом, Pacemaker может обнаруживать сбои компонентов и координировать необходимые процедуры аварийного переключения, чтобы свести к минимуму перебои в работе приложений.

- Pacemaker для групп доступности и экземпляров отказоустойчивого кластера в среде Linux
- Развертывание кластера Pacemaker для SQL Server на Linux