Linux系统各类主要日志轮转配置

Linux系统及相关服务日志留存配置

系统日志

/var/log/syslog

记录系统级别的通用信息和错误信息,包括启动、关机、设备驱动加载等。

vim /etc/logrotate.d/rsyslog 
/var/log/syslog
{ 
rotate 7 # 保存
daily  # 每天轮转日志
missingok
notifempty
delaycompress # 延迟压缩直到下一次轮转 
compress # 压缩旧日志
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}

/var/log/messages

vim /etc/logrotate.d/rsyslog 
{
rotate 52
weekly
missingok # 如果日志文件不存在则不报错
notifempty # 如果日志文件为空则不进行轮转
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}

/var/log/auth.log

记录与身份验证和授权相关的事件的日志文件。包含用户登录尝试、SSH链接、sudo操作等信息。

vim /etc/logrotate.d/rsyslog

/var/log/auth.log 
{
    rotate 365
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

/var/log/dpkg.log

记录通过dpkg命令进行的所有软件包管理活动,包括安装、升级、删除和清除软件包等操作

vim /etc/logrotate.d/dpkg
/var/log/dpkg.log {
  monthly
rotate 12
compress
delaycompress
missingok
notifempty
create 644 root root
}

/var/log/apt

# 记录了APT命令行界面下的交互式输出,即当用户运行APT命令时,在终端显示的信息也会被记录下来
/var/log/apt/term.log {
  rotate 12
  monthly
  compress
  missingok
  notifemp
ty
}
# 记录了所有通过APT进行的软件包管理操作,包括安装、升级、移除等。
/var/log/apt/history.log {
  rotate 12
  monthly
  compress
  missingok
  notifempty
}

其它日志轮转配置

ls /etc/logrotate.d/

配置调试与生效

调试:

logrotate -d /etc/logrotate.d/rsyslog

强制生效(否则会在下一次日志轮转生效):

logrotate -f /etc/logrotate.d/rsyslog

服务日志

MySQL数据库服务日志

binary logs

MySQL 的二进制日志(binlog)主要有以下几个作用:

  • 数据恢复:通过使用 MySQL 提供的工具 mysqlbinlog,可以将 binlog 文件解析成 SQL 语句,然后重新执行这些语句来恢复数据库到某个时间点的状态。

  • 主从复制:在主从复制架构中,主服务器会把所有的数据变更操作记录到 binlog 中,从服务器读取这些 binlog 并在本地重放这些操作以保持与主服务器的数据同步。

  • 审计:由于 binlog 记录了所有对数据库的修改操作,因此它也可以用于审计目的,了解哪些操作被执行以及何时被执行。

  • 增量备份:结合全量备份和 binlog 日志,可以实现增量备份策略,即只备份自上次备份以来发生变化的数据。

  • 高可用性和灾难恢复:利用 binlog 可以实现数据库的高可用性解决方案,比如在发生故障时进行快速恢复或切换到备用数据库实例。

查看binary log文件
show binary logs
查看和配置binlog过期时间
show variables like 'expire_logs_days';

注:expire_logs_days在mysql8.0被废弃,使用秒级别配置变量来设置binlog的过期时间。

默认binlog_expire_logs_seconds为2592000,即binlog保存30天

show variables like 'binlog_expire_logs_seconds'

设置过期时间

set global binlog_expire_logs_seconds=17280000;
max_binlog_size

单位是字节,默认为1GB

set global max_binlog_size=1073741824;
CoolCats
CoolCats
理学学士

我的研究兴趣是时空数据分析、知识图谱、自然语言处理与服务端开发