温馨提示×

CentOS上SQL Server的故障恢复方法有哪些

小樊
42
2025-12-29 14:10:39
栏目: 云计算

CentOS上SQL Server故障恢复方法

一 服务与实例恢复

  • 快速定位与拉起:使用命令查看与启动服务,并设置开机自启——systemctl status|start|enable mssql-server;若反复重启失败,先停止再排查。
  • 错误日志与系统日志:先看 SQL Server 错误日志(默认路径:/var/opt/mssql/log/errorlog),再用 journalctl -u mssql-server -xe 查看 systemd 日志,按最近错误与时间线定位根因。
  • 文件权限与所有权:确保数据目录归属正确——chown -R mssql:mssql /var/opt/mssql,权限异常会导致启动或访问失败。
  • 端口与防火墙:确认监听端口并放通,默认端口 1433——firewall-cmd --zone=public --add-port=1433/tcp --permanent && firewall-cmd --reload
  • 网络连通与监听:从客户端测试连通性——ss -lntp | grep 1433;客户端用 telnet 服务器IP 1433nc -zv 服务器IP 1433;核对监听地址配置 /etc/mssql/mssql.conf.d/90-sqlservr.conf 中的 listen_addresses=0.0.0.0(或所需网段)。
  • 单用户模式观察启动:怀疑异常关机或文件损坏时,以单用户模式启动观察输出——/opt/mssql/bin/sqlservr -m;必要时先做好文件级备份再继续恢复操作。

二 数据库级恢复

  • 从备份还原(常规且优先):将备份文件(.bak.trn)复制到服务器后,用 T-SQL 执行还原。示例:
    • 完整还原:
      RESTORE DATABASE [YourDB] FROM DISK = ‘/backups/YourDB.bak’ WITH REPLACE, RECOVERY;
    • 日志还原(时点恢复):
      RESTORE LOG [YourDB] FROM DISK = ‘/backups/YourDB_Log.trn’ WITH RECOVERY;
      还原后连接实例验证数据库状态与数据一致性。
  • 事务日志空间与增长失控:先检查日志使用率——DBCC SQLPERF(LOGSPACE);在完整恢复模式下,先执行日志备份以截断日志,再按需收缩日志文件(示例:DBCC SHRINKFILE (YourDB_log, 100),将日志收缩至 100MB),完成后视 RPO/RTO 需求恢复为 FULLSIMPLE 恢复模式。
  • 一致性修复(仅在无有效备份且数据损坏时作为最后手段):先完整文件级备份当前状态,再执行 DBCC CHECKDB(‘YourDB’) 评估;若必须修复且可承受数据丢失,方可使用 DBCC CHECKDB(‘YourDB’) WITH REPAIR_ALLOW_DATA_LOSS(务必评估业务影响并做好备份)。

三 账户与访问恢复

  • 重置 sa 密码或解锁账户:使用 sqlcmd 本地连接后执行——
    • 修改密码:ALTER LOGIN sa WITH PASSWORD = ‘NewStrong!Passw0rd’;
    • 启用账户:ALTER LOGIN sa ENABLE;
      完成后用新凭据验证登录。
  • 连接失败快速排查:确认服务运行与监听(systemctl status mssql-serverss -lntp | grep 1433)、防火墙放通 1433/tcp、客户端测试 telnet/nc、以及连接字符串中的服务器地址、端口、数据库、凭据是否正确。

四 灾难恢复与高可用

  • 日志传送与数据库镜像:用于站点级灾难恢复与快速切换。示例:
    • 日志传送:在主库定期执行日志备份并还原到备库,故障时在备库上执行 RESTORE LOG … WITH RECOVERY 完成切换。
    • 数据库镜像(高可用/故障转移):通过 ALTER DATABASE YourDB SET PARTNER FAILOVER; 触发故障转移(需事先正确配置镜像)。

五 恢复后的验证与加固

  • 完整性验证:对关键库执行 DBCC CHECKDB 确认无一致性错误。
  • 统计信息与索引:重建索引、更新统计信息,确保查询性能恢复。
  • 功能与业务回归:执行业务功能与性能回归测试,确认恢复成功。
  • 备份策略固化:按 RPO/RTO 建立定期全备/差异备/日志备策略,并定期演练恢复流程。

0