首页主机资讯SQL Server在CentOS故障排查技巧

SQL Server在CentOS故障排查技巧

时间2025-11-24 11:28:03发布访客分类主机资讯浏览511
导读:SQL Server在CentOS的故障排查技巧 一 快速定位流程 服务状态与自启:使用命令查看与拉起服务,确认是否开机自启 命令:sudo systemctl status mssql-server、sudo systemctl sta...

SQL Server在CentOS的故障排查技巧

一 快速定位流程

  • 服务状态与自启:使用命令查看与拉起服务,确认是否开机自启
    命令:sudo systemctl status mssql-serversudo systemctl start mssql-serversudo systemctl enable mssql-server。若反复重启失败,先停止后再排查。
  • 错误日志:先看 SQL Server 错误日志,再看 systemd 日志
    路径:/var/log/mssql/errorlog;命令:journalctl -u mssql-server -xe。从最近的错误与时间线定位根因。
  • 文件权限与所有权:确保数据目录归属正确
    命令:sudo chown -R mssql:mssql /var/opt/mssql。权限异常会导致启动或访问失败。
  • 端口与防火墙:确认监听端口并放通
    默认端口:1433;放通命令:sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent & & sudo firewall-cmd --reload
  • 网络连通与监听:从客户端测试连通性
    命令:ping 服务器IP;端口检测:telnet 服务器IP 1433nc -zv 服务器IP 1433。无法连通时优先排查网络与防火墙策略。
  • 配置核对:检查监听地址配置
    文件路径:/etc/mssql/mssql.conf.d/90-sqlservr.conf,确保包含 listen_addresses=0.0.0.0(或所需网段)以监听所有接口。
  • 客户端侧检查:确认客户端工具与连接串
    安装工具:sudo yum install -y mssql-tools unixODBC-devel;连接测试:sqlcmd -S localhost -U SA -P ‘YourStrong!Passw0rd’ -Q “SELECT 1”。连接串需包含正确的服务器地址、端口、数据库、用户名、密码

二 常见故障与修复

  • 服务启动即崩溃或反复重启
    典型现象:systemctl 显示 Active: failed (Result: signal)。处理步骤:
    1. journalctl -u mssql-server -xe 查具体信号与报错;
    2. 若日志出现 “Unable to read instance id from /var/opt/mssql/.system/instance_id”,先备份该文件(若存在),再删除后重启,实例会自动生成新的 instance_id。注意:这可能导致依赖 NEWSEQUENTIALID() 的表在重启后出现顺序性异常风险,务必评估业务影响并做好备份。
  • 断电或异常关机后无法启动
    处理步骤:
    1. 以单用户模式观察启动输出:sudo /opt/mssql/bin/sqlservr -m
    2. 若怀疑数据文件异常,先做好文件级备份,再用 sqlcmd 执行检查与修复:
      • 检查:sqlcmd -S localhost -U SA -Q “DBCC CHECKDB (‘YourDB’)”
      • 修复(谨慎):sqlcmd -S localhost -U SA -Q “DBCC CHECKDB (‘YourDB’) WITH REPAIR_ALLOW_DATA_LOSS”(仅在无法用常规手段恢复时、且有完整备份的前提下执行)。
  • 客户端连接超时或拒绝
    排查顺序:
    1. 服务端确认服务运行与监听:systemctl status mssql-serverss -lntp | grep 1433
    2. 防火墙放通 1433/tcp
    3. 客户端测试:telnet 服务器IP 1433nc -zv 服务器IP 1433
    4. 核对连接字符串参数(服务器、端口、数据库、凭据)与账号权限。
  • 主机名解析异常
    现象:应用或客户端报无法解析主机。处理:
    1. 检查 /etc/hosts 中主机名与IP映射;
    2. 检查 /etc/resolv.confnameserver 是否可用,必要时更换为可用 DNS。

三 性能与阻塞排查

  • 即时会话与请求:
    查询阻塞与长时运行会话:
    • 查看活跃请求与等待信息:
      • SELECT session_id, request_id, task_state, wait_type, wait_time_ms, start_time, command, text FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) st ORDER BY wait_time_ms DESC;
    • 查看会话与登录信息:
      • SELECT session_id, login_name, host_name, program_name, login_time, last_request_end_time FROM sys.dm_exec_sessions;
    • 结合执行统计定位问题 SQL:
      • SELECT TOP 20 qs.execution_count, qs.total_worker_time/qs.execution_count AS avg_cpu_ms, qs.total_elapsed_time/qs.execution_count AS avg_elapsed_ms, SUBSTRING(qt.text, (qs.statement_start_offset/2)+1, ((CASE qs.statement_end_offset WHEN -1 THEN DATALENGTH(qt.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2)+1) AS stmt_text FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt ORDER BY avg_elapsed_ms DESC;
  • 资源瓶颈定位:
    • 系统层:top/htop、vmstat、iostat、nmon、sar、dstat、glances 观察 CPU、内存、I/O、网络;
    • 存储层:用 iostat -x 1 检查 await、svctm、util% 判断磁盘压力;
    • 网络层:netstat -s、tcpdump 排查丢包与重传。
  • 日志与空间:
    • 查看日志空间使用:DBCC SQLPERF(LOGSPACE);
    • 事务日志维护:按业务 RPO 定期执行 BACKUP LOG [DB] TO DISK=‘…’ WITH FORMAT; ,避免日志无限增长。
  • 深入诊断:
    • 使用 扩展事件(Extended Events) 捕获长时 SQL、锁等待、错误等;
    • 借助 SSMS 活动监视器 或性能仪表盘快速定位热点查询与阻塞链。

四 监控与日志管理

  • 基础监控:
    • 命令行健康检查:sqlcmd -S localhost -U SA -P ‘YourStrong!Passw0rd’ -Q “SELECT @@SERVERNAME, @@VERSION; ”
    • 系统资源:top/htop、vmstat、iostat、nmon、sar、dstat、glances
    • 第三方监控:Prometheus + Grafana(建议配合 prometheus-mssql-exporter)、ZabbixNagios 等,覆盖实例存活、连接数、查询性能、磁盘/内存/CPU 等关键指标。
  • 日志集中与审计:
    • 系统日志集中:rsyslog 收集与转发;
    • 日志分析与可视化:ELK Stack(Elasticsearch, Logstash, Kibana)Splunk
    • 审计与合规:启用 SQL Server 审计 或触发器记录关键数据变更,便于追踪与取证。

五 排错命令清单

  • 服务与日志:systemctl status|start|enable mssql-serverjournalctl -u mssql-server -xetail -n 200 /var/log/mssql/errorlog
  • 端口与连通:ss -lntp | grep 1433firewall-cmd --list-portstelnet 服务器IP 1433nc -zv 服务器IP 1433
  • 权限与目录:ls -ld /var/opt/mssql /var/opt/mssql/.systemchown -R mssql:mssql /var/opt/mssql
  • 客户端与连通:sqlcmd -S localhost -U SA -P ‘Pwd’ -Q “SELECT 1”
  • 资源与 I/O:top/htop、vmstat 1、iostat -x 1、nmon、sar、dstat、glances
  • 数据库诊断:DBCC SQLPERF(LOGSPACE); DBCC CHECKDB(‘DB’);长时 SQL 与阻塞查询(见第三部分 SQL)

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: SQL Server在CentOS故障排查技巧
本文地址: https://pptw.com/jishu/754279.html
CentOS如何备份SQL Server数据 CentOS SQL Server安全设置方法

游客 回复需填写必要信息