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命令限制日志文件最大大?。ㄈ?code>ALTER DATABASE [YourDB] MODIFY FILE (NAME = YourDB_Log, MAXSIZE = 1GB)),避免單個文件過大;sys.database_files視圖監控日志文件大?。?code>SELECT name, size FROM sys.database_files WHERE type_desc = 'LOG'),設置告警閾值(如當日志文件超過80%容量時觸發告警)。