温馨提示×

Debian上SQL Server的故障排查技巧

小樊
41
2025-11-15 00:40:20
栏目: 云计算

Debian上SQL Server故障排查技巧

一 快速定位流程

  • 服务状态与启动
    • 确认服务是否运行:sudo systemctl status mssql-server
    • 启动/重启:sudo systemctl start|restart mssql-server
  • 系统日志与内核信息
    • 实时查看系统日志:tail -f /var/log/syslog
    • 内核与系统日志:dmesgjournalctl -xe
  • 资源与磁盘
    • 资源占用:top/htopfree -m
    • 磁盘空间:df -h
  • 网络连通与端口
    • 本机监听与端口占用:ss -lntp | grep 1433netstat -an | grep 1433
    • 防火墙放行:sudo ufw allow 1433/tcp
  • 连接测试
    • 本机连接:sqlcmd -S localhost -U SA -P ‘
  • 配置与内存
    • 重新配置:sudo /opt/mssql/bin/mssql-conf setup
    • 调整最大内存(示例为8GB):sudo /opt/mssql/bin/mssql-conf set memory.memorylimitmb 8192 后重启服务

二 日志与定位要点

  • SQL Server错误日志
    • 路径:/var/opt/mssql/log/errorlog
    • 查看方式:sudo tail -n 200 /var/opt/mssql/log/errorlog;也可用 journalctl -u mssql-server -f 跟踪服务日志
  • 系统侧日志
    • 系统日志:/var/log/syslog
    • 内核日志:dmesg
  • 日志轮转与归档
    • 使用 logrotate 管理 SQL Server 相关日志,设置按日轮转、压缩与保留天数,避免磁盘被占满

三 常见故障与修复

  • 服务无法启动
    • 查看错误日志定位根因:tail -n 200 /var/opt/mssql/log/errorlog
    • 重新运行配置向导:sudo /opt/mssql/bin/mssql-conf setup
    • 重启服务:sudo systemctl restart mssql-server
  • 无法远程连接
    • 监听端口:ss -lntp | grep 1433 确认 1433 处于监听
    • 防火墙:sudo ufw allow 1433/tcp
    • 本机连通性:sqlcmd -S <服务器IP> -U SA -P ‘
  • 内存不足或性能异常
    • 设置最大内存(示例为8GB):sudo /opt/mssql/bin/mssql-conf set memory.memorylimitmb 8192 并重启
    • 优化查询、索引与并发,减少锁等待与I/O压力
  • 磁盘空间告警
    • 检查:df -h
    • 清理旧日志、归档历史数据,确保 /var/opt/mssql 所在分区充足

四 性能与资源监控

  • 系统资源
    • CPU/内存:top/htopfree -m
    • 磁盘I/O:iostat -x 1
    • 网络:ss -snetstat -an
  • SQL Server内部指标
    • 使用 DMV 查询会话、等待、内存与I/O:SELECT * FROM sys.dm_os_wait_stats;SELECT * FROM sys.dm_db_session_space_usage;
    • 借助 SSMS 性能监视器SQL Server Profiler 做深入分析与抓包

五 安全与维护建议

  • 加固与访问控制
    • 仅开放必要端口(默认 1433/TCP),使用 ufwnftables 实施最小权限
    • 强密码策略与定期轮换 SA 密码,限制远程 SA 登录,优先使用域/证书或专用低权账户
  • 备份与恢复
    • 制定定期全量/差异/日志备份策略,保留多份异地副本,定期演练恢复
  • 更新与补丁
    • 保持系统与 SQL Server 组件更新:sudo apt update && sudo apt upgrade
  • 变更留痕
    • 调整 mssql-conf 前先备份配置,变更后记录并验证,必要时回滚

0