如何迅速定位并解决CentOS系统上SQL Server故障,确保业务连续性?
- 内容介绍
- 文章标签
- 相关推荐
SQL Server 故障往往导致业务停摆、数据不可访问、恢复成本飙升——这正是你最担心的痛点。
常见业务痛点汇总
- 服务频繁宕机,导致业务中断时间超出 SLA 规定。
- 错误日志信息不完整,排查周期长达数小时。
- 权限或配置错误导致启动失败,却找不到根本原因。
- 磁盘 I/O 瓶颈、网络丢包,影响查询性能与响应时间。
- 缺乏快速恢复脚本,业务恢复无法按计划执行。
一、快速定位流程
1️⃣ 检查服务状态与自启设置
sudo systemctl status mssql-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 的常见故障,从而保障业务连续性。
SQL Server 故障往往导致业务停摆、数据不可访问、恢复成本飙升——这正是你最担心的痛点。
常见业务痛点汇总
- 服务频繁宕机,导致业务中断时间超出 SLA 规定。
- 错误日志信息不完整,排查周期长达数小时。
- 权限或配置错误导致启动失败,却找不到根本原因。
- 磁盘 I/O 瓶颈、网络丢包,影响查询性能与响应时间。
- 缺乏快速恢复脚本,业务恢复无法按计划执行。
一、快速定位流程
1️⃣ 检查服务状态与自启设置
sudo systemctl status mssql-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 的常见故障,从而保障业务连续性。

