如何迅速定位并解决CentOS系统上SQL Server故障,确保业务连续性?

更新于
2026-08-09 14:21:38
2阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

SQL Server 故障往往导致业务停摆、数据不可访问、恢复成本飙升——这正是你最担心的痛点。

常见业务痛点汇总

  • 服务频繁宕机,导致业务中断时间超出 SLA 规定。
  • 错误日志信息不完整,排查周期长达数小时。
  • 权限或配置错误导致启动失败,却找不到根本原因。
  • 磁盘 I/O 瓶颈、网络丢包,影响查询性能与响应时间。
  • 缺乏快速恢复脚本,业务恢复无法按计划执行。

一、快速定位流程

1️⃣ 检查服务状态与自启设置

sudo systemctl status mssql-server

如何迅速定位并解决CentOS系统上SQL Server故障,确保业务连续性?

确认 Active 状态和最最近志。说起来,至于若未运行,

sudo systemctl start mssql-server
sudo systemctl enable mssql-server

2️⃣ 查看程序级日志

journalctl -u mssql-server -xe

3️⃣ SQL Server 错误日志

cat /var/opt/mssql/log/errorlog | tail -n 50
# 或者
less /var/opt/mssql/log/errorlog

4️⃣ 验证文件权限与所有权

sudo chown -R mssql:mssql /var/opt/mssql
sudo chmod -R u+rwx /var/opt/mssql

5️⃣ 检查网络与防火墙配置

端口检查:

ss -tuln | grep :1433 # 默认 SQL Server TCP 端口
# 若未监听。可在配置文件中开启:
sed -i 's/#listen_addresses = .*/listen_addresses = *./' /etc/mssql/mssql.conf.d/90-sqlservr.conf
sudo systemctl restart mssql-server

防火墙规则:

sudo firewall-cmd --add-port=1433/tcp --permanent
sudo firewall-cmd --reload

二、性能与阻塞排查技巧

  • CPU/内存使用: top | grep mssql-server htop
  • I/O 压力: iostat -x 1 | grep 'Device'
  • SAR 性能监控: sar -u 1 5 sar -d 1 5 sar -n DEV 1 5
  • DML 阻塞与死锁检测: 在 SQL Server 内执行: sql SELECT * FROM sys.dm_exec_requests WHERE blocking_session_id <>0;SELECT * FROM sys.dm_os_waiting_tasks;
  • NMON 简化监控: `nmon` 可实时查看 CPU、内存、I/O 与网络。使用 `Ctrl+C` 保存报告。其实,
  • dstat 全面监控: `dstat -cdngy` 打印 CPU、磁盘、网络与程序信息。
  • `glances` 提供单屏多维度实时监控。
  • `D娱乐C SQLPERF` 查看事务日志占用空间,及时截断或备份。

三、快速恢复脚本示例

systemctl stop mssql-server || true rm -f /var/opt/mssql/log/*

chown -R mssql:mssql /var/opt/mssql && chmod -R u+rwx /var/opt/mssql && systemctl enable mssql-server

systemctl start mssql-server && \ echo "=== 服务状态 ===" && \ systemctl status mssql-server | head -n10

echo "=== 程序级日志尾部 ===" && \ journalctl -u mssql-server --since "10 minutes ago" | tail

echo "=== SQL Server 错误日志尾部 ===" && \ tail /var/opt/mssql/log/errorlog

exit $?

请根据你们的实际环境,将上述脚本保存为 /usr/local/bin/sqlserver-recover.sh 并赋予执行权限 chmod +x ...。其实,首次运行后你就可以在出现故障时迅速恢复服务,并通过日志追踪根因。


关键点回顾:

  • 先看程序级别,再查看 SQL Server 自带错误日志;
  • 确保目录权限正确,否则即使配置无误也会报 “Permission denied”;怎么说呢,
  • 确认 listen_address 与防火墙允许外部连接;不过,
  • 使用程序监控工具定位 CPU/I/O 瓶颈;
  • 保持事务日志定期备份,避免因空间不足导致挂起。

通过上述步骤。你可以在 几分钟 内定位大多数 CentOS 上 SQL Server 的常见故障,从而保障业务连续性。

如何迅速定位并解决CentOS系统上SQL Server故障,确保业务连续性?

标签:CentOS

SQL Server 故障往往导致业务停摆、数据不可访问、恢复成本飙升——这正是你最担心的痛点。

常见业务痛点汇总

  • 服务频繁宕机,导致业务中断时间超出 SLA 规定。
  • 错误日志信息不完整,排查周期长达数小时。
  • 权限或配置错误导致启动失败,却找不到根本原因。
  • 磁盘 I/O 瓶颈、网络丢包,影响查询性能与响应时间。
  • 缺乏快速恢复脚本,业务恢复无法按计划执行。

一、快速定位流程

1️⃣ 检查服务状态与自启设置

sudo systemctl status mssql-server

如何迅速定位并解决CentOS系统上SQL Server故障,确保业务连续性?

确认 Active 状态和最最近志。说起来,至于若未运行,

sudo systemctl start mssql-server
sudo systemctl enable mssql-server

2️⃣ 查看程序级日志

journalctl -u mssql-server -xe

3️⃣ SQL Server 错误日志

cat /var/opt/mssql/log/errorlog | tail -n 50
# 或者
less /var/opt/mssql/log/errorlog

4️⃣ 验证文件权限与所有权

sudo chown -R mssql:mssql /var/opt/mssql
sudo chmod -R u+rwx /var/opt/mssql

5️⃣ 检查网络与防火墙配置

端口检查:

ss -tuln | grep :1433 # 默认 SQL Server TCP 端口
# 若未监听。可在配置文件中开启:
sed -i 's/#listen_addresses = .*/listen_addresses = *./' /etc/mssql/mssql.conf.d/90-sqlservr.conf
sudo systemctl restart mssql-server

防火墙规则:

sudo firewall-cmd --add-port=1433/tcp --permanent
sudo firewall-cmd --reload

二、性能与阻塞排查技巧

  • CPU/内存使用: top | grep mssql-server htop
  • I/O 压力: iostat -x 1 | grep 'Device'
  • SAR 性能监控: sar -u 1 5 sar -d 1 5 sar -n DEV 1 5
  • DML 阻塞与死锁检测: 在 SQL Server 内执行: sql SELECT * FROM sys.dm_exec_requests WHERE blocking_session_id <>0;SELECT * FROM sys.dm_os_waiting_tasks;
  • NMON 简化监控: `nmon` 可实时查看 CPU、内存、I/O 与网络。使用 `Ctrl+C` 保存报告。其实,
  • dstat 全面监控: `dstat -cdngy` 打印 CPU、磁盘、网络与程序信息。
  • `glances` 提供单屏多维度实时监控。
  • `D娱乐C SQLPERF` 查看事务日志占用空间,及时截断或备份。

三、快速恢复脚本示例

systemctl stop mssql-server || true rm -f /var/opt/mssql/log/*

chown -R mssql:mssql /var/opt/mssql && chmod -R u+rwx /var/opt/mssql && systemctl enable mssql-server

systemctl start mssql-server && \ echo "=== 服务状态 ===" && \ systemctl status mssql-server | head -n10

echo "=== 程序级日志尾部 ===" && \ journalctl -u mssql-server --since "10 minutes ago" | tail

echo "=== SQL Server 错误日志尾部 ===" && \ tail /var/opt/mssql/log/errorlog

exit $?

请根据你们的实际环境,将上述脚本保存为 /usr/local/bin/sqlserver-recover.sh 并赋予执行权限 chmod +x ...。其实,首次运行后你就可以在出现故障时迅速恢复服务,并通过日志追踪根因。


关键点回顾:

  • 先看程序级别,再查看 SQL Server 自带错误日志;
  • 确保目录权限正确,否则即使配置无误也会报 “Permission denied”;怎么说呢,
  • 确认 listen_address 与防火墙允许外部连接;不过,
  • 使用程序监控工具定位 CPU/I/O 瓶颈;
  • 保持事务日志定期备份,避免因空间不足导致挂起。

通过上述步骤。你可以在 几分钟 内定位大多数 CentOS 上 SQL Server 的常见故障,从而保障业务连续性。

如何迅速定位并解决CentOS系统上SQL Server故障,确保业务连续性?

标签:CentOS