CentOS 上 SQL Server 的更新与升级策略
一 策略总览
- 分层治理:将操作分为两类——累积更新 CU(小版本)与版本升级(大版本)。CU 通过包管理器在线滚动更新,尽量不停机;大版本升级需按路径规划、严格验证与回滚预案。
- 兼容与平台:SQL Server 2017/2019/2022 已在 CentOS 7/8 等平台长期可用;跨主版本升级需满足微软的支持路径,并优先在受支持的 CentOS 版本上实施。升级前确认应用对目标版本 T‑SQL/功能/驱动 的兼容性。
- 回滚能力:Linux 上的包升级会替换二进制文件,但用户数据库与系统数据库文件默认保留;如需回滚,仅支持同一主版本内的小版本降级(downgrade),跨主版本不支持原地回滚。
- 变更管控:生产环境采用蓝绿/滚动方式切换,先在测试环境演练,再在维护窗口实施,并保留可快速回切的路由或连接字符串策略。
二 更新与升级路径
- 小版本更新(CU/补丁)
- 流程:备份 → 检查可用更新 → 执行 yum 更新 → 重启服务 → 验证
- 命令示例:
- 备份关键库:BACKUP DATABASE [YourDB] TO DISK = ‘/var/opt/mssql/backup/YourDB.bak’ WITH INIT;
- 系统更新:sudo yum update -y mssql-server
- 重启:sudo systemctl restart mssql-server
- 验证:sqlcmd -S localhost -U sa -P ‘’ -Q “SELECT @@VERSION;”
- 要点:更新只替换二进制,数据库文件保留;建议先在测试环境验证,再滚动到生产。
- 大版本升级(例如 2019 → 2022)
- 路径与平台:遵循微软升级路径;SQL Server 2022 建议使用 CentOS 8 或更高版本。
- 流程:全量备份(含 master/msdb/model 与用户库)→ 校验应用与驱动兼容性 → 添加目标版本 YUM 源 → 执行 yum install mssql-server(升级二进制)→ 启动服务 → 调整数据库兼容级别 → 完整性校验 → 应用回归测试 → 切换流量/清理旧源。
- 命令示例(升级到 2022 场景):
- 备份:BACKUP DATABASE [YourDB] TO DISK = ‘/var/opt/mssql/backup/YourDB.bak’ WITH INIT;
- 添加 2022 源(示例为 RHEL8 对应源,CentOS 8 可用):
- sudo curl -o /etc/yum.repos.d/mssql-server-2022.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo
- sudo yum clean all
- 升级:sudo yum install -y mssql-server
- 启动:sudo systemctl start mssql-server
- 兼容级别(示例:2022 为 150):
- sqlcmd -S localhost -U sa -P ‘’ -Q “ALTER DATABASE [YourDB] SET COMPATIBILITY_LEVEL = 150;”
- 完整性:sqlcmd -S localhost -U sa -P ‘’ -Q “DBCC CHECKDB ([YourDB])”
- 要点:升级后按需逐步启用新功能;仅当明确收益时再提升兼容级别,避免影响计划缓存/执行计划。
三 回滚与应急
- 小版本回滚:同一主版本内可直接降级包(示例:sudo yum downgrade mssql-server-.x86_64),回滚后重启服务并复核版本与数据一致性。
- 跨主版本回滚:不支持原地降级;采用备份恢复方式回到旧版本实例(在旧版本环境还原备份或从备份重建实例)。
- 故障定位:查看 /var/opt/mssql/log/ 下日志,结合 sqlcmd 与系统 journalctl 排查启动/升级失败原因。
四 维护窗口与风险控制
- 维护窗口与通知:选择低峰时段,提前通知业务方;准备回滚预案与回切演练记录。
- 网络与防火墙:仅开放必要端口(默认 1433/TCP),使用 firewalld 精准放行;变更前后验证连通性。
- 高可用与切换:有高可用/读写分离架构时,先升级副本/辅助节点,再切换主节点,降低影响面。
- 安全加固:及时应用安全补丁;强化 SA 密码策略、最小权限与网络访问控制;定期审计与监控。
五 版本与平台建议
- 平台选择:优先在受支持的 CentOS 7/8上部署与升级;SQL Server 2022建议使用 CentOS 8 或更高版本以获得更好的兼容性与支持性。
- 工具与驱动:保持客户端驱动(如 ODBC)与目标版本匹配;升级后在应用端回归连接、查询与事务行为。