SQL Server在Ubuntu上的日志管理方法
导读:SQL Server 在 Ubuntu 的日志管理 一 日志类型与存放位置 数据库事务日志:每个用户数据库的日志文件为 .ldf,默认位于 /var/opt/mssql/data/(例如:YourDB.ldf)。这类日志用于恢复与回滚,不...
SQL Server 在 Ubuntu 的日志管理
一 日志类型与存放位置
- 数据库事务日志:每个用户数据库的日志文件为 .ldf,默认位于 /var/opt/mssql/data/(例如:YourDB.ldf)。这类日志用于恢复与回滚,不能简单删除或清空文件。
- 错误日志与诊断:SQL Server 引擎错误日志、默认探查器跟踪、系统健康检查会话 XE、Hekaton XE 等,默认位于 /var/log/sqlserver/(常见为 sqlservr.log)。可通过 mssql-conf 调整默认错误日志目录。
- 系统层面日志:由 journald/systemd 与 rsyslog 管理,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.log或journalctl -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 1433或ss -lntp | grep 1433
- 状态:
- 错误日志快速定位:
sudo tail -n 200 /var/log/sqlserver/sqlservr.log | grep -i error - 磁盘与内存:
df -h、free -h,确保有足够空间(建议至少预留 2 GB 可用)。 - 配置调整:使用 mssql-conf 修改默认目录(如错误日志目录、备份目录等),例如:
sudo /opt/mssql/bin/mssql-conf set defaulterrorlogdir /var/log/sqlserver,然后重启服务:sudo systemctl restart mssql-server。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: SQL Server在Ubuntu上的日志管理方法
本文地址: https://pptw.com/jishu/772661.html
