SQL Server在Ubuntu上的日志文件主要存储在/var/opt/mssql/data/目录下,常见类型包括:
errorlog;journalctl(systemd日志服务)存储,可通过journalctl -u mssql-server查看SQL Server服务的系统日志。用于定期轮换、压缩、删除旧日志文件,防止日志过大占用磁盘空间。默认配置文件位于/etc/logrotate.conf,SQL Server专用配置通常在/etc/logrotate.d/mssql(需手动创建)。示例配置:
/var/opt/mssql/data/*.log {
daily # 每日轮换
rotate 30 # 保留30个归档文件
compress # 压缩旧文件(如.gz格式)
delaycompress # 延迟压缩(保留最近1个未压缩文件)
missingok # 忽略缺失文件
notifempty # 空文件不轮换
copytruncate # 复制原日志后清空(避免重启服务)
}
通过sudo logrotate -f /etc/logrotate.d/mssql手动触发轮换,系统会通过cron每日自动执行。
将SQL Server日志发送到远程集中式日志服务器(如ELK、Graylog),或本地不同文件,便于统一分析。配置步骤:
/etc/rsyslog.conf,添加规则将SQL Server日志重定向:if $programname == 'mssql-server' then /var/log/sqlserver/sqlserver.log
& stop
sudo systemctl restart rsyslog。通过journalctl命令查询SQL Server服务的实时或历史日志,支持按时间、优先级过滤:
# 查看最近10条SQL Server日志
journalctl -u mssql-server -n 10
# 查看2025-09-20至2025-09-22的错误日志
journalctl -u mssql-server --since "2025-09-20" --until "2025-09-22" -p err
日志默认保留7天,可通过/etc/systemd/journald.conf调整MaxRetentionSec延长保留时间。
tail -f /var/opt/mssql/data/errorlog跟踪错误日志的实时变化;lnav工具(sudo apt install lnav),支持语法高亮、过滤(如/ERROR筛选错误信息),提升日志可读性;sudo logwatch --service mssql --output mail),或Logalyze进行可视化分析(支持趋势图、统计报表)。根据业务需求选择恢复模式,直接影响事务日志的增长:
BACKUP LOG YourDB TO DISK = '/var/opt/mssql/backup/YourDB_Log.bak')。ALTER DATABASE [YourDB] SET RECOVERY SIMPLE/FULL;。BACKUP LOG命令,防止日志无限增长;DBCC SHRINKFILE收缩(需先备份日志截断空间):USE [master];
GO
DBCC SHRINKFILE (YourDB_Log, 100); -- 将日志文件收缩至100MB
注意:频繁收缩会导致日志碎片化,建议结合备份策略定期执行。ALTER DATABASE命令限制日志文件最大大小(如ALTER DATABASE [YourDB] MODIFY FILE (NAME = YourDB_Log, MAXSIZE = 1GB)),避免单个文件过大;sys.database_files视图监控日志文件大小(SELECT name, size FROM sys.database_files WHERE type_desc = 'LOG'),设置告警阈值(如当日志文件超过80%容量时触发告警)。