Ubuntu环境下SQL Server日志管理技巧
/var/opt/mssql/log/errorlog,事务日志(.ldf文件)位于/var/opt/mssql/data/目录下(与对应数据库数据文件同级)。可通过sudo ls /var/opt/mssql/log/或sudo ls /var/opt/mssql/data/确认文件位置。tail -f命令动态跟踪日志更新,例如查看错误日志:sudo tail -f /var/opt/mssql/log/errorlog;查看SQL Server服务输出日志:sudo tail -f /var/opt/mssql/log/output.log。如需过滤特定关键词(如“error”),可结合grep命令:sudo tail -f /var/opt/mssql/log/errorlog | grep "error"。logrotate,可自动轮转、压缩、删除旧日志。SQL Server的专用配置文件通常位于/etc/logrotate.d/mssql(若不存在,可手动创建)。示例配置(限制日志大小为100MB,保留7个归档文件,压缩旧日志):/var/opt/mssql/log/*.log {
daily
rotate 7
size 100M
compress
delaycompress
missingok
notifempty
create 640 mssql mssql
sharedscripts
postrotate
systemctl restart mssql-server > /dev/null 2>&1 || true
endscript
}
手动触发轮转:sudo logrotate -f /etc/logrotate.d/mssql。journalctl命令查看与SQL Server相关的系统日志,支持按时间、服务名过滤。例如:查看SQL Server服务的最新日志:sudo journalctl -u mssql-server;查看特定时间段(如最近1小时)的日志:sudo journalctl -u mssql-server --since "1 hour ago";过滤错误级别的日志:sudo journalctl -u mssql-server -p err。Logwatch生成每日日志报告(包含错误统计、服务状态),安装后配置/etc/logwatch/conf/services/mssql.conf即可启用;Logalyze则支持可视化分析日志中的异常模式(如频繁的连接超时)。SIMPLE)会自动截断不活动的事务日志(适合测试/开发环境),完整恢复模式(FULL)需配合日志备份才能截断(适合生产环境,支持时间点恢复)。修改命令示例:ALTER DATABASE [YourDB] SET RECOVERY SIMPLE;。BACKUP LOG [YourDB] TO DISK = '/var/opt/mssql/backups/YourDB_Log.bak';DBCC SHRINKFILE (YourDB_Log, 100);(100为收缩后的目标大小,单位为MB)。cron设置每日日志备份(如凌晨2点)和清理任务。编辑crontab:sudo crontab -e,添加以下内容(备份错误日志到/var/backups/sqllogs/并删除7天前的备份):0 2 * * * tar -czf /var/backups/sqllogs/errorlog_$(date +\%F).tar.gz /var/opt/mssql/log/errorlog && find /var/backups/sqllogs/ -name "errorlog_*.tar.gz" -mtime +7 -delete
df -h命令定期检查磁盘使用情况,设置阈值告警(如磁盘使用率超过80%时发送邮件通知),避免日志文件占满磁盘导致服务中断。