SQL Server在CentOS上的日志管理指南
SQL Server在CentOS系统中的日志主要分为两类,路径如下:
/var/opt/mssql/log/errorlog(CentOS 7及以上版本),包含SQL Server实例的启动、停止信息及运行时错误。journalctl命令查看SQL Server服务的系统级日志(如服务启动失败、权限问题等)。直接查看错误日志
使用cat或less命令查看错误日志内容,例如:
cat /var/opt/mssql/log/errorlog
less /var/opt/mssql/log/errorlog
less命令支持翻页和搜索(按/键输入关键词),便于定位特定错误。
查看系统日志
通过journalctl命令过滤SQL Server服务的日志,例如:
journalctl -u mssql-server # 查看所有SQL Server服务日志
journalctl -u mssql-server -n 50 # 查看最近50条日志
journalctl -u mssql-server --since "2025-10-01" --until "2025-10-31" # 按时间范围筛选
使用SQL Server工具查询
通过sqlcmd命令行工具连接SQL Server实例,执行T-SQL命令查看日志空间使用情况:
sqlcmd -S localhost -U sa -P YourPassword -Q "DBCC SQLPERF(LOGSPACE);"
该命令返回数据库日志文件的总大小、已使用空间、剩余空间及使用百分比,帮助判断日志空间是否充足。
自动增长配置
SQL Server日志文件支持自动增长,避免因空间不足导致服务中断。可通过以下步骤调整:
定期备份与截断
对于“完整”恢复模式的数据库,需定期备份事务日志以释放空间。执行以下T-SQL命令:
BACKUP LOG [YourDatabaseName] TO DISK = '/path/to/YourDatabaseName_LogBackup.bak' WITH FORMAT;
备份完成后,日志空间会被截断(释放未使用的部分)。建议通过SQL Server Agent创建定时作业(如每天凌晨2点执行),自动化备份流程。
日志压缩与清理
USE [YourDatabaseName];
GO
ALTER DATABASE [YourDatabaseName] SET RECOVERY SIMPLE; -- 切换至简单恢复模式
DBCC SHRINKFILE ([YourLogFileName], 100); -- 将日志文件缩小至100MB(需替换为实际逻辑文件名)
ALTER DATABASE [YourDatabaseName] SET RECOVERY FULL; -- 如需恢复完整模式,切回
GO
其中,YourLogFileName可通过USE [YourDatabaseName]; GO; EXEC sp_helpfile;查询。find命令):find /path/to/log/backups -name "*.bak" -mtime +30 -exec rm {} \; # 删除30天前的.bak文件
日志轮换
通过SQL Server的“日志轮换”功能(内置),自动分割日志文件。可在SQL Server Agent中创建作业,定期执行日志备份命令,实现日志文件的循环覆盖。
SQL Server自带审计
启用SQL Server的审计功能,记录数据库修改、登录尝试等操作:
CREATE SERVER AUDIT [ServerAudit] TO FILE (FILEPATH = '/var/opt/mssql/log/audit/');
SELECT、INSERT操作):USE [YourDatabaseName];
CREATE DATABASE AUDIT SPECIFICATION [DatabaseAudit]
FOR SERVER AUDIT [ServerAudit]
ADD (SELECT ON OBJECT::[YourTable] BY [public]),
ADD (INSERT ON OBJECT::[YourTable] BY [public]);
ALTER SERVER AUDIT [ServerAudit] WITH (STATE = ON);
ALTER DATABASE AUDIT SPECIFICATION [DatabaseAudit] WITH (STATE = ON);
第三方工具集成
对于大规模环境,可使用以下工具集中化管理日志: