温馨提示×

centos里sqlserver日志管理

小樊
38
2025-12-25 16:24:38
栏目: 云计算

CentOS 上 SQL Server 日志管理实操指南

一 日志类型与存放路径

  • 错误日志与启动日志:位于 /var/opt/mssql/log/errorlog,并按序号轮转生成 errorlog.1、errorlog.2 …。这些文件记录了 SQL Server 引擎启动、错误与告警信息。
  • 系统日志(服务层面):通过 journalctl -u mssql-server 查看 systemd 服务日志,便于排查服务启动失败、崩溃重启等问题。
  • 数据库事务日志文件:每个用户数据库的日志文件为 .ldf,默认与数据文件同目录(常见为 /var/opt/mssql/data/),文件名与数据库名对应。
  • 扩展事件与诊断日志:如 system_health_*.xelHkEngineEventFile_*.xel 等,用于性能与故障诊断。

二 查看与监控日志

  • 查看错误日志(文件):
    • 实时跟踪:tail -f /var/opt/mssql/log/errorlog
    • 分页查看:less /var/opt/mssql/log/errorlog
  • 查看服务日志(systemd):
    • 查看全部:journalctl -u mssql-server
    • 实时跟踪:journalctl -u mssql-server -f
  • 查看数据库日志空间使用(T-SQL):
    • 连接实例后执行:USE [YourDatabaseName]; DBCC SQLPERF(LOGSPACE);
  • 查看数据库恢复模型(决定日志是否可截断):
    • SELECT name, recovery_model_desc FROM sys.databases;
  • 查看日志文件与大小(T-SQL):
    • 执行:EXEC sp_helpfile;(在目标数据库上下文)

三 事务日志维护与截断

  • 前提与原则:
    • 仅当数据库恢复模型为 FULLBULK_LOGGED 时,事务日志备份才会触发“可恢复”的日志截断;SIMPLE 模式会在检查点自动截断,无需日志备份。
  • 日志备份与截断(示例):
    • 备份到文件(推荐,用于可恢复与归档):
      • BACKUP LOG [YourDatabaseName] TO DISK = ‘/var/opt/mssql/backup/YourDB_2025-12-25.trn’ WITH FORMAT, INIT;
    • 仅用于测试或临时释放空间(不保留日志链,生产慎用):
      • BACKUP LOG [YourDatabaseName] TO DISK = ‘NUL’;
  • 自动化:
    • SQL Server Agent 中创建作业,按业务 RPO 设置频率(如每 5–15 分钟一次),并配置保留策略(定期清理过期 .trn)。
  • 收缩日志文件(仅在日志已备份/可截断后进行,避免频繁收缩):
    • 查看逻辑日志文件名:EXEC sp_helpfile;(记下日志逻辑名,如 YourDB_log)
    • 收缩到指定大小(MB):
      • USE [YourDatabaseName];
      • DBCC SHRINKFILE (N’YourDB_log’, 4096); – 单位 MB
  • 重要提示:
    • 频繁或激进收缩会导致 VLF 激增与性能下降,优先通过合理的日志备份频率控制日志大小。

四 日志轮转与归档清理

  • 错误日志轮转:SQL Server 会自动轮转 errorlog,旧文件以序号保存;可按需压缩归档历史 errorlog.*.gz 并清理超期文件(确保保留足够回溯周期)。
  • 事务日志备份归档:
    • 使用 Linux 定时任务或备份软件将 /var/opt/mssql/backup/*.trn 归档至对象存储/异地,并按保留策略删除本地旧文件。
  • 系统日志轮转:
    • 配置 journald 的 MaxRetentionSec、MaxFileSec 或使用 logrotate 对 journalerrorlog 做统一轮转与压缩。
  • 目录规划:
    • 建议将备份与日志分离,如:/var/opt/mssql/backup(备份)、/var/opt/mssql/log(错误日志)、/var/opt/mssql/data(数据/日志文件)。

五 变更日志目录与集中监控

  • 变更日志目录(mssql-conf):
    • 通过 mssql-conf 可修改错误日志、数据文件、日志文件的默认目录,例如:
      • 设置错误日志目录:sudo /opt/mssql/bin/mssql-conf set filelocation.errorlogdir /data/mssql/log
      • 设置默认数据目录:sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /data/mssql/data
      • 设置默认日志目录:sudo /opt/mssql/bin/mssql-conf set filelocation.defaultlogdir /data/mssql/log
    • 修改后需重启服务:sudo systemctl restart mssql-server
  • 集中监控与审计:
    • errorlogjournalctl 输出接入 rsyslog/ELK(Elasticsearch、Logstash、Kibana)/Splunk,实现检索、告警与可视化。

0