温馨提示×

SQL Server在Ubuntu上的日志管理方法

小樊
35
2025-12-16 03:11:12
栏目: 云计算

SQL Server 在 Ubuntu 的日志管理

一 日志类型与存放位置

  • 数据库事务日志:每个用户数据库的日志文件为 .ldf,默认位于 /var/opt/mssql/data/(例如:YourDB.ldf)。这类日志用于恢复与回滚,不能简单删除或清空文件。
  • 错误日志与诊断:SQL Server 引擎错误日志、默认探查器跟踪、系统健康检查会话 XE、Hekaton XE 等,默认位于 /var/log/sqlserver/(常见为 sqlservr.log)。可通过 mssql-conf 调整默认错误日志目录。
  • 系统层面日志:由 journald/systemdrsyslog 管理,SQL Server 服务日志通常也写入 /var/log/syslog,可用 journalctl -u mssql-server 查看。

二 查看与实时监控

  • 查看数据库事务日志内容(只读):使用 tail 跟踪日志尾部,例如:sudo tail -f /var/opt/mssql/data/YourDB.ldf。注意该文件为二进制格式,仅适合查看增长与异常迹象,不建议直接编辑。
  • 查看 SQL Server 错误日志:
    • 命令行:sudo tail -f /var/log/sqlserver/sqlservr.logjournalctl -u mssql-server -f
    • 图形化:在 SSMS 中展开“管理”→“SQL Server 日志”。
  • 查看系统日志:使用 cat /var/log/syslog | grep sqlservr 或配合 rsyslog 进行集中采集与过滤。

三 事务日志容量控制与备份策略

  • 选择恢复模式:
    • FULL:需定期做日志备份才能进行日志截断,支持时间点恢复(生产常用)。
    • SIMPLE:日志在检查点自动截断,无法做时间点恢复(测试/非关键环境可用)。
  • 日志备份触发截断(FULL 模式):执行日志备份后,日志空间可被重用。示例:
    • BACKUP LOG MyDB TO DISK = '/var/opt/mssql/backup/MyDB_Log_2025-12-16.bak';
  • 收缩日志文件(谨慎):在确保日志已备份/可截断后,按需收缩日志文件大小。示例:
    • USE MyDB; DBCC SHRINKFILE (N'MyDB_Log', 1024);(将日志收缩至约 1 GB
  • 重要提示:
    • 不要直接删除或清空 .ldf 文件;收缩前确保有可用备份策略。
    • 不建议长期开启 AUTO_SHRINK,以免导致索引碎片与性能波动。

四 系统日志轮转与归档

  • 使用 logrotate 管理 SQL Server 相关日志(如 /var/log/sqlserver/ 下的日志):
    • 创建配置:sudo vim /etc/logrotate.d/sqlserver,示例:
      /var/log/sqlserver/*.log {
          daily
          rotate 7
          compress
          missingok
          notifempty
          copytruncate
      }
      
    • 测试与强制执行:sudo logrotate -f /etc/logrotate.conf
  • 使用 rsyslog 进行日志集中与转发:编辑 /etc/rsyslog.conf/etc/rsyslog.d/ 下的配置,将日志写入指定文件或发送至远程日志服务器;完成后重启服务:sudo systemctl restart rsyslog
  • 说明:SQL Server 数据库 .ldf 属于数据库文件,容量治理应通过“日志备份+收缩”完成,不建议用 logrotate 直接切割或删除。

五 常用维护命令与排错清单

  • 服务状态与端口:
    • 状态:sudo systemctl status mssql-server
    • 启动:sudo systemctl start mssql-server
    • 端口检查:sudo netstat -tuln | grep 1433ss -lntp | grep 1433
  • 错误日志快速定位:sudo tail -n 200 /var/log/sqlserver/sqlservr.log | grep -i error
  • 磁盘与内存:df -hfree -h,确保有足够空间(建议至少预留 2 GB 可用)。
  • 配置调整:使用 mssql-conf 修改默认目录(如错误日志目录、备份目录等),例如:sudo /opt/mssql/bin/mssql-conf set defaulterrorlogdir /var/log/sqlserver,然后重启服务:sudo systemctl restart mssql-server

0