如何在Ubuntu上更新SQL Server后轻松提升数据库性能与安全性?
- 内容介绍
- 文章标签
- 相关推荐
至于常见痛点。更新后可能遇到的困扰
- 性能骤降:升级后查询变慢,CPU/IO 使用率飙升。
- 安全隐患:旧版漏洞未修补,导致数据泄露风险。
- 服务不可用:SQL Server 未能正常启动或端口被防火墙阻断。
- 兼容性问题:应用程序连接失败,出现库版本不匹配错误。
一、升级前的准备工作
1. 备份关键数据
在任何程序层面的更新之前。务必先对数据库进行完整备份,以防止意外数据丢失。
sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '' -Q "BACKUP DATABASE TO DISK = '/var/opt/mssql/backup/YourDB.bak' WITH INIT"
2. 检查当前版本与程序兼容性
确认现有 SQL Server 版本支持目标 Ubuntu 发行版。
sqlcmd -S localhost -U SA -P '' -Q "SELECT @@VERSION"
3. 更新程序软件包列表
sudo apt update && sudo apt upgrade -y
二、添加或更新 Microsoft 官方存储库
1. 导入 GPG 密钥
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
2. 注册适用于当前 Ubuntu 版本的存储库
wget -qO- https://packages.microsoft.com/config/ubuntu/$/mssql-server.list | sudo tee /etc/apt/sources.list.d/mssql-server.list
3. 同步软件源
sudo apt update
三、执行 SQL Server 更新或全新安装
1. 安装SQL Server 包
sudo apt install -y mssql-server
# 若已存在旧版本。会自动执行升级流程
2. 运行配置向导并设置 SA 密码
sudo /opt/mssql/bin/mssql-conf setup
# 按提示选择版本、输入强密码、设置默认语言等
3. 重新启动使更改生效
sudo systemctl restart mssql-server
sudo systemctl status mssql-server --no-pager # 确认状态为 active
四、验证升级成功与基本连通性
- 检查服务状态:
# 已在上一步完成,可
确认
sudo systemctl status mssql-server --no-pager
' -Q "SELECT @@VERSION"
确保防火墙已开放 1433 端口。
# 开放端口并启用防火墙
sudo ufw allow 1433/tcp
sudo ufw enable
五、提高性能的关键措施
a) 索引调整
- 为经常出现在 WHERE、JOIN、ORDER BY 子句中的列创建合适的非聚集索引。
- 使用覆盖索引避免回表,提高查询吞吐量。
-
' -Q " DECLARE @sql NVARCHAR = N'';SELECT @sql += N'ALTER INDEX ALL ON . REBUILD;',FROM sys.tables t;按理说,EXEC sp_executesql @sql;"b) 更新统计信息
统计信息是查询调整器的关键依据,及时刷新可避免错误的执行计划。其实,
' -Q " EXEC sp_updatestats;"- SMA 设置最大内存,防止占满程序资源:
/opt/mssql/bin/mssql-conf set memory.memorylimitmb 8192 # 示例:限制为 8GB systemctl restart mssql-serverD) 磁盘 I/O 调整
- 推荐使用 XFS 或 EXT4 文件程序; 避免 BTRFS,怎么说呢,
- If possible。将日志文件 与数据文件 分别放置在不同的 SSD 分区,以降低写入竞争。按理说,
示例命令:
# 更改默认数据和日志目录 sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /mnt/data/sql-data sudo /opt/mssql/bin/mssql-conf set filelocation.defaultlogdir /mnt/log/sql-log systemctl restart mssql-server六、安全加固要点
-
TLS 加密:LATEST 安装 libssl & libldap 并启用加密通信。
# 安装依赖库 sudo apt install -y libssl1.1 libldap-2.4-2 # 启用 TLS /opt/mssql/bin/mssql-conf set network.tlscertpath /etc/ssl/certs/sqlserver.crt /opt/mssql/bin/mssql-conf set network.tlskeypath /etc/ssl/private/sqlserver.key systemctl restart mssql-server -
AUDIT & LOGGING:Keeps audit logs for login attempts and schema changes.
/opt/mssql/bin/mssql-conf set audit.enabled true systemctl restart mssql-server - 最小化特权账户: * 删除不再使用的登录名; * 为每个业务角色分配最小权限。说起来,bash sqlcmd –S localhost –U SA –P 'StrongPwd!' –Q "DROP LOGIN "
- 防火墙规则:只允许可信 IP 访问 14330 bash sudo ufw allow from 203.0.113.0/24 to any port 14330 proto tcp
- 定期检查官方安全公告,并在补丁发布后立即执行: bash sudo apt update && sudo apt upgrade –y ### 七、常见问题及快捷方式 | 症状 | 可能原因 | 尽快处理办法 | |------|----------|--------------| | **服务无法启动** | 配置文件语法错误或硬盘空间不足 | `journalctl -u mssql-server` 看日志;清理磁盘并重新运行 `mssql-conf setup` | | **连接超时** | 防火墙未放行 14333 或监听地址被绑定到本地回环 | `sudo ufw allow 14333/tcp`;检查 `/etc/hosts` 中是否误配置 | | **查询慢** | 缺少必要索引或统计信息过期 | 按上文 “索引调整” 与 “更新统计信息” 步骤操作 | | **TLS 握手失败** | 缺少 libssl 或证书方法错误 | 确认 `libssl1.1` 已安装;不过,证书方法无误并重新启动 | #### 常用排错命令合集 bash # 查看服务状态与最最近志片段 systemctl status mssql-server --no-pager # 实时查看程序资源使用情况 htop # 检查端口监听情况 ss -tlnp | grep 14330 # 查看 SQL Server 错误日志 cat /var/opt/mssql/log/errorlog | tail -n 50
部署 Promeus + Grafana 插件,实时监控 CPU、内存、磁盘 I/O 与等待时间。按理说,官方提供 Exporter 可直接采集指标。八、日常维护建议
- 定期备份: 每周全备。每日增量,使用 Azure Blob 或本地 NAS 作离线存储。
- Patching 策略: 每月第一周执行 `apt update && apt upgrade`,确保所有安全补丁及时落地。
- 监控指标这方面。
- 清理临时文件和旧日志:
sudo find /var/opt/mss ql/log/*‑error.log‑* –mtime +30 –delete // 删除30天前的错误日志
- 完成全部步骤后你的 Ubuntu 上 SQL Server 将以更高的性能、更稳固的安全姿态运行。记得把这篇文章加入收藏,以便随时回顾!-
至于常见痛点。更新后可能遇到的困扰
- 性能骤降:升级后查询变慢,CPU/IO 使用率飙升。
- 安全隐患:旧版漏洞未修补,导致数据泄露风险。
- 服务不可用:SQL Server 未能正常启动或端口被防火墙阻断。
- 兼容性问题:应用程序连接失败,出现库版本不匹配错误。
一、升级前的准备工作
1. 备份关键数据
在任何程序层面的更新之前。务必先对数据库进行完整备份,以防止意外数据丢失。
sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '' -Q "BACKUP DATABASE TO DISK = '/var/opt/mssql/backup/YourDB.bak' WITH INIT"
2. 检查当前版本与程序兼容性
确认现有 SQL Server 版本支持目标 Ubuntu 发行版。
sqlcmd -S localhost -U SA -P '' -Q "SELECT @@VERSION"
3. 更新程序软件包列表
sudo apt update && sudo apt upgrade -y
二、添加或更新 Microsoft 官方存储库
1. 导入 GPG 密钥
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
2. 注册适用于当前 Ubuntu 版本的存储库
wget -qO- https://packages.microsoft.com/config/ubuntu/$/mssql-server.list | sudo tee /etc/apt/sources.list.d/mssql-server.list
3. 同步软件源
sudo apt update
三、执行 SQL Server 更新或全新安装
1. 安装SQL Server 包
sudo apt install -y mssql-server
# 若已存在旧版本。会自动执行升级流程
2. 运行配置向导并设置 SA 密码
sudo /opt/mssql/bin/mssql-conf setup
# 按提示选择版本、输入强密码、设置默认语言等
3. 重新启动使更改生效
sudo systemctl restart mssql-server
sudo systemctl status mssql-server --no-pager # 确认状态为 active
四、验证升级成功与基本连通性
- 检查服务状态:
# 已在上一步完成,可
确认
sudo systemctl status mssql-server --no-pager
' -Q "SELECT @@VERSION"
确保防火墙已开放 1433 端口。
# 开放端口并启用防火墙
sudo ufw allow 1433/tcp
sudo ufw enable
五、提高性能的关键措施
a) 索引调整
- 为经常出现在 WHERE、JOIN、ORDER BY 子句中的列创建合适的非聚集索引。
- 使用覆盖索引避免回表,提高查询吞吐量。
-
' -Q " DECLARE @sql NVARCHAR = N'';SELECT @sql += N'ALTER INDEX ALL ON . REBUILD;',FROM sys.tables t;按理说,EXEC sp_executesql @sql;"b) 更新统计信息
统计信息是查询调整器的关键依据,及时刷新可避免错误的执行计划。其实,
' -Q " EXEC sp_updatestats;"- SMA 设置最大内存,防止占满程序资源:
/opt/mssql/bin/mssql-conf set memory.memorylimitmb 8192 # 示例:限制为 8GB systemctl restart mssql-serverD) 磁盘 I/O 调整
- 推荐使用 XFS 或 EXT4 文件程序; 避免 BTRFS,怎么说呢,
- If possible。将日志文件 与数据文件 分别放置在不同的 SSD 分区,以降低写入竞争。按理说,
示例命令:
# 更改默认数据和日志目录 sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /mnt/data/sql-data sudo /opt/mssql/bin/mssql-conf set filelocation.defaultlogdir /mnt/log/sql-log systemctl restart mssql-server六、安全加固要点
-
TLS 加密:LATEST 安装 libssl & libldap 并启用加密通信。
# 安装依赖库 sudo apt install -y libssl1.1 libldap-2.4-2 # 启用 TLS /opt/mssql/bin/mssql-conf set network.tlscertpath /etc/ssl/certs/sqlserver.crt /opt/mssql/bin/mssql-conf set network.tlskeypath /etc/ssl/private/sqlserver.key systemctl restart mssql-server -
AUDIT & LOGGING:Keeps audit logs for login attempts and schema changes.
/opt/mssql/bin/mssql-conf set audit.enabled true systemctl restart mssql-server - 最小化特权账户: * 删除不再使用的登录名; * 为每个业务角色分配最小权限。说起来,bash sqlcmd –S localhost –U SA –P 'StrongPwd!' –Q "DROP LOGIN "
- 防火墙规则:只允许可信 IP 访问 14330 bash sudo ufw allow from 203.0.113.0/24 to any port 14330 proto tcp
- 定期检查官方安全公告,并在补丁发布后立即执行: bash sudo apt update && sudo apt upgrade –y ### 七、常见问题及快捷方式 | 症状 | 可能原因 | 尽快处理办法 | |------|----------|--------------| | **服务无法启动** | 配置文件语法错误或硬盘空间不足 | `journalctl -u mssql-server` 看日志;清理磁盘并重新运行 `mssql-conf setup` | | **连接超时** | 防火墙未放行 14333 或监听地址被绑定到本地回环 | `sudo ufw allow 14333/tcp`;检查 `/etc/hosts` 中是否误配置 | | **查询慢** | 缺少必要索引或统计信息过期 | 按上文 “索引调整” 与 “更新统计信息” 步骤操作 | | **TLS 握手失败** | 缺少 libssl 或证书方法错误 | 确认 `libssl1.1` 已安装;不过,证书方法无误并重新启动 | #### 常用排错命令合集 bash # 查看服务状态与最最近志片段 systemctl status mssql-server --no-pager # 实时查看程序资源使用情况 htop # 检查端口监听情况 ss -tlnp | grep 14330 # 查看 SQL Server 错误日志 cat /var/opt/mssql/log/errorlog | tail -n 50
部署 Promeus + Grafana 插件,实时监控 CPU、内存、磁盘 I/O 与等待时间。按理说,官方提供 Exporter 可直接采集指标。八、日常维护建议
- 定期备份: 每周全备。每日增量,使用 Azure Blob 或本地 NAS 作离线存储。
- Patching 策略: 每月第一周执行 `apt update && apt upgrade`,确保所有安全补丁及时落地。
- 监控指标这方面。
- 清理临时文件和旧日志:
sudo find /var/opt/mss ql/log/*‑error.log‑* –mtime +30 –delete // 删除30天前的错误日志
- 完成全部步骤后你的 Ubuntu 上 SQL Server 将以更高的性能、更稳固的安全姿态运行。记得把这篇文章加入收藏,以便随时回顾!-

