centos下sqlserver如何故障排查
导读:CentOS 下 SQL Server 故障排查清单 一 快速定位流程 检查服务状态:运行命令:systemctl status mssql-server;若未运行,执行:systemctl start mssql-server。 查看错...
CentOS 下 SQL Server 故障排查清单
一 快速定位流程
- 检查服务状态:运行命令:systemctl status mssql-server;若未运行,执行:systemctl start mssql-server。
- 查看错误日志:SQL Server 错误日志默认在 /var/log/mssql/errorlog;同时用 journalctl -u mssql-server 查看 systemd 日志,定位启动失败或崩溃线索。
- 校验文件权限:确保数据目录属主正确:chown -R mssql:mssql /var/opt/mssql。
- 检查监听与端口:确认实例在 1433 端口监听,必要时在 /etc/mssql/mssql.conf.d/90-sqlservr.conf 设置 listen_addresses=0.0.0.0 以监听所有地址。
- 网络连通性:在客户端测试 ping 与 telnet 服务器IP 1433(或 nc -zv 服务器IP 1433),确认端口可达。
- 防火墙放行:在服务器执行:firewall-cmd --zone=public --add-port=1433/tcp --permanent & & firewall-cmd --reload。
- 客户端侧验证:安装并使用 sqlcmd/ODBC 测试连接,排除连接字符串错误(服务器地址、端口、数据库、账号、密码)。
二 常见故障与修复
- 服务反复崩溃或无法启动(systemctl 显示 signal/ABRT):先用 journalctl -xe 找到具体报错;若日志出现 “Unable to read instance id from /var/opt/mssql/.system/instance_id”,先备份该文件后删除,再启动服务,实例会自动生成新的 instance_id(注意:这可能导致依赖 NEWSEQUENTIALID() 的表出现 GUID 顺序性变化)。
- 断电或异常关机后的启动异常:先停止服务,再以单用户模式观察输出:/opt/mssql/bin/sqlservr -m;若检测到数据文件异常,可用 DBCC CHECKDB 检查并在评估风险后执行修复(见下一节注意事项)。
- 端口未监听或仅本地可连:核对 listen_addresses 配置为 0.0.0.0,确认 SELinux 未拦截(必要时临时 setenforce 0 验证),并用 ss -lntp | grep 1433 或 netstat -tulpen | grep 1433 检查监听地址与进程。
- 防火墙/安全组阻断:在服务器放行 1433/tcp 并重新加载规则;云环境同时检查云安全组策略。
- 登录失败或权限不足:核对 SA 或域/本地账号是否被锁定、密码是否正确、是否授予了目标数据库的 CONNECT 与所需权限;必要时在 SSMS 或 sqlcmd 中重置密码并审计登录失败记录。
三 性能与资源瓶颈排查
- 系统资源:在 OS 侧用 top/vmstat/mpstat/iostat 观察 CPU、内存、I/O 是否成为瓶颈;结合 nmon/sar 做趋势分析。
- SQL Server 内部:查询 sys.dm_exec_requests / sys.dm_exec_sessions / sys.dm_exec_query_stats 定位长时运行与阻塞会话;用 DBCC SQLPERF(LOGSPACE) 检查日志空间;通过 Extended Events 捕获慢查询、锁等待与死锁。
- 内存压力:从实例视角查询 sys.dm_os_sys_memory 了解物理/虚拟内存与内存压力;必要时在 SSMS 或 T‑SQL 中合理设置 最大服务器内存(max server memory),避免占用过多系统内存。
- 监控与告警:结合 Zabbix、Prometheus + Grafana(prometheus-mssql-exporter) 等做长期可视化监控与阈值告警。
四 连接问题专项排查
- 端到端连通性:从客户端依次验证 ping、telnet/nc 到 1433、以及应用连接字符串(主机、端口、数据库、加密/信任证书、登录方式)。
- 服务与端口:确认 mssql-server 已运行且实例在 1433 监听;若监听在 127.0.0.1,需调整 listen_addresses 为 0.0.0.0。
- 防火墙与安全策略:服务器本地防火墙放行 1433/tcp;云主机同步检查安全组入站规则。
- 认证与授权:确保登录账号存在、未被锁定、密码正确,并具备目标库访问权限;必要时在 SSMS 的活动监视器中排查阻塞与长事务。
五 数据安全与恢复建议
- 变更前先备份:对 /var/opt/mssql 做完整备份(含 .system 目录),尤其是 instance_id 等关键文件。
- 谨慎修复:仅在充分评估数据风险后执行 DBCC CHECKDB … REPAIR_ALLOW_DATA_LOSS;优先尝试 REPAIR_REBUILD 或从备份还原。
- 定期维护:建立 日志备份、索引/统计信息维护 与 一致性检查 的计划任务;保留可用备份与恢复演练记录。
- 高可用:关键业务建议配置 Always On 可用性组 或定期离线备份,缩短 RTO/RPO。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos下sqlserver如何故障排查
本文地址: https://pptw.com/jishu/772992.html
