升级Linux 上的 SQL Server的注意事项

为了最大程度地减少停机时间和风险,在计划从早期版本的 Linux 上的 SQL Server 升级SQL Server 数据库引擎时,应考虑多种方法。

升级方法 停机时间估计 推荐
就地升级 分钟数或小时数
迁移到新实例 几秒或几分钟(仅限切换) 是的

停机时间取决于数据库的大小和 I/O 子系统的速度。 使用内存优化表升级数据库可能需要额外的时间。 有关详细信息,请参阅在 Windows 上规划和测试数据库引擎升级计划

注释

迁移的停机时间估计是指将用户重定向到新实例时的切换窗口。 生成和准备新环境的总经过时间更长。

确保高可用性和灾难恢复(HADR)策略包括回退方案。 环境和组织的服务级别协议(SLA)的复杂性决定了要遵循的流程以及相关的风险。

有关 Linux 上 SQL Server 各版本支持的功能列表,请参阅:

注意事项

如果执行就地升级,将覆盖以前的 SQL Server 实例,该实例将在计算机上不再存在。 如果您将数据库迁移到新实例,则旧实例将保持完整,直到您将其停用为止。 无论选择哪种方法,在开始之前备份与上一个SQL Server实例关联的SQL Server数据库和其他对象。

注释

请参阅供应商文档,随时了解操作系统安全性、网络、群集、监视以及任何其他组件和依赖项。

安全性

  • 运行系统安全性:如果在安全增强型Linux(SELinux)版本上将SQL Server安装为受限服务,请备份此配置。 有关详细信息,请参阅 SELinux 上的 SQL Server 入门

  • Certificates:备份透明数据加密(TDE)、AlwaysOn 可用性组和故障转移群集实例的证书、链接服务器、复制、日志传送、数据库邮件、PolyBase、SQL Server 代理、Service Broker 和应用程序(包括 Always Encrypted)。 有关详细信息,请参阅 TDS 8.0TLS 1.3 支持

  • Credentials:大多数SQL Server凭据存储在 master 中,但应备份服务主密钥、数据库主密钥、列主密钥以及链接服务器的连接信息、Azure 密钥保管库、硬件安全模块、Active Directory/Kerberos 和连接信息Microsoft Entra ID。 有关详细信息,请参阅 Get started with 数据库引擎 permissions and Securables

  • Firewall:默认情况下,SQL Server需要 TCP 端口 1433 进行客户端访问。 备份您环境中当前配置的任何防火墙规则。

配置

  • mssql-conf:使用 mssql-conf 工具配置SQL Server实例。 它将设置存储在 mssql.conf 文件中。 有关此文件所在的位置的信息,请参阅 mssql-conf 工具配置Linux 上的 SQL Server

    注释

    SQL Server平台抽象层(SQLPAL)不存储任何用户可访问的配置。 无需备份。

  • cgroups:如果使用 cgroups 管理环境的资源利用率,请备份配置。

  • 网络:备份网络配置,包括主机文件、DNS、连接字符串、负载均衡器等。

  • SQL Server 代理:编写脚本并检查所有SQL Server 代理作业,包括数据库和服务器维护任务。 例如,如果更改主机名或文件系统访问方式发生变化,则可能会导致作业失败、行为异常,或者可能覆盖现有的数据库备份。

  • Monitoring:检查已安装的任何监视代理,包括 Azure Connected Machine 代理。

  • 群集:备份任何群集资源管理配置,例如 Pacemaker 和 Corosync。

无安装程序

与Windows上的SQL Server不同,Linux 上的 SQL Server没有安装程序。 而是为每个组件单独打包分发。 若要安装或升级数据库引擎和其他组件,请使用 Linux 分发版随附的包管理器。 有关安装步骤,请参阅 Linux 上的 SQL Server 的安装指南。 有关配置包存储库的信息,请参阅 配置存储库以安装和升级 Linux 上的 SQL Server

就地升级

使用此方法,包管理器将删除以前版本的 SQL Server 的二进制文件,并将其替换为新的二进制文件。 配置保持不变。

注释

如果升级需要任何外部依赖项(例如较新版本的包(如 Python 或 OpenSSL),包管理器会解析这些依赖项,并在更新SQL Server包之前安装它们。

首次启动SQL Server时,它会运行多个脚本来升级每个系统和用户数据库。

虽然就地升级方法最简单,但需要一些停机时间。 如果进程失败,服务器可能处于不一致状态。

在以下方案中使用此方法:

  • 不需要高可用性 (HA) 配置的开发环境。

  • 一个非任务关键型生产环境,可以容忍停机时间,并且该环境在最近的硬件和软件上运行。

迁移到新实例

迁移到新环境(也称为并行部署)可最大程度减少停机时间,并在出现问题时回切到源服务器。 通过使用此方法,可以在生成新的SQL Server环境时保留当前环境,经常在新硬件或新虚拟机上使用新版本的操作系统。

使用此方法升级:

  • 在不受支持的操作系统上安装 SQL Server 。
  • 您希望将在 Windows Server 上运行的 SQL Server 迁移到 Red Hat Enterprise Linux 或 Ubuntu。
  • 将 SQL Server 迁移到新的硬件、新的虚拟机和/或操作系统的新版本。
  • SQL Server 进行服务器整合。
  1. 迁移系统配置
  2. 迁移系统对象
  3. 迁移用户数据库
  4. 指向新实例

迁移系统配置

设置新环境,引用之前备份的安全配置设置。 按照 安装指南安装和配置Linux 上的 SQL Server。

迁移系统对象

某些应用程序依赖于单个用户数据库范围之外的信息、实体和对象。

通常,应用程序具有对 mastermsdb 数据库的依赖关系,并且还具有对用户数据库的依赖关系。 目标服务器实例需要具有存储在用户数据库外部的任何可用内容,才能使该数据库正常运行。

例如,应用程序登录名作为元数据 master 存储在数据库中,必须在目标服务器上重新创建它们。 如果应用程序或数据库维护计划依赖于SQL Server 代理作业,其元数据存储在 msdb 数据库中,则必须在目标服务器实例上重新创建这些作业。 同样,服务器级触发器的元数据存储在 master 中。

当您将应用程序的数据库迁移到另一台服务器实例时,必须在目标服务器实例上重新创建 mastermsdb 中依赖实体的元数据。 例如,如果数据库应用程序使用服务器级触发器,则仅附加或还原新实例上的数据库是不够的。 除非在数据库中手动重新创建这些触发器的 master 元数据,否则数据库不会按预期工作。 有关详细信息,请参阅 在使数据库在另一台服务器上可用时管理元数据

迁移用户数据库

在新SQL Server环境中重新创建系统对象后,将用户数据库从现有系统迁移到新的SQL Server实例,以最大程度地减少现有系统上的停机时间。 您可以通过备份和还原来完成数据库迁移,或者在 SAN 环境中通过重新指向 LUN 来实现。

有关在 Linux 上使用备份和还原的详细信息,请参阅 在 Linux 上备份和还原SQL Server数据库

指向新实例

迁移用户数据库后,使用多种方法之一将新用户指向新的SQL Server实例(例如,使用 DNS 条目重命名服务器和修改连接字符串)。 与就地升级相比,迁移到新实例可降低风险和停机时间,并让你有机会同时升级硬件和操作系统。