CentOS 中 backlog 的数据备份与留存
概念澄清
在 Linux/CentOS 环境中,backlog 常见有三种指代:一是内核网络层的连接队列参数(如 net.core.somaxconn、net.ipv4.tcp_max_syn_backlog);二是应用或服务的“待处理任务队列”(业务数据,需按应用方案备份);三是常被口语化用来指代“日志/消息”(如 /var/log/messages、journalctl 日志)。不同含义的“备份”做法完全不同,请按下述对应场景操作。
场景一 备份内核网络 backlog 相关配置
- 备份当前内核参数(可纳入版本控制)
- 查看与导出:
- cat /proc/sys/net/core/somaxconn
- cat /proc/sys/net/ipv4/tcp_max_syn_backlog
- sysctl -a | grep somaxconn
- sysctl -a | grep tcp_max_syn_backlog
- 建议将关键项写入持久化配置 /etc/sysctl.conf 或 /etc/sysctl.d/99-backlog.conf,例如:
- net.core.somaxconn = 4096
- net.ipv4.tcp_max_syn_backlog = 4096
- 使配置生效:sysctl -p
- 备份与恢复防火墙/NFT 规则(与连接排队策略常配合使用)
- iptables:iptables-save > /backup/iptables-$(date +%F).rules;恢复:iptables-restore < 文件
- nftables:nft list ruleset > /backup/nft-$(date +%F).rules;恢复:nft restore < 文件
- 说明
- 连接队列是运行时状态,原则上不可“逐连接”导出;上述做法聚焦于“可备份的配置与规则”,便于灾难恢复与一致性回滚。
场景二 备份日志类 backlog(messages、journal 等)
- 使用 rsync 增量同步到备份目录(示例:/backup/logs)
- 命令:sudo rsync -av --delete /var/log/ /backup/logs/
- 定时:crontab -e 加入 0 2 * * * rsync -av --delete /var/log/ /backup/logs/
- 使用 tar 打包归档(按日)
- 命令:sudo tar -czvf /backup/logs/logs-$(date +%Y%m%d).tar.gz /var/log/
- 使用 logrotate 做按日轮转与压缩(推荐长期留存)
- 示例(/etc/logrotate.d/messages):
- /var/log/messages {
- daily
- rotate 7
- compress
- missingok
- notifempty
- create 640 root adm
- postrotate
- /usr/bin/systemctl kill -s HUP rsyslog || true
- endscript
- }
- 测试:logrotate -f /etc/logrotate.conf
- 使用 journalctl 导出 systemd 日志
- 导出全量:journalctl -a > /backup/journal-$(date +%F).log
- 按服务:journalctl -u nginx -a > /backup/journal-nginx-$(date +%F).log
- 权限与安全
- 备份目录注意权限(如 root:root 700),敏感日志加密或脱敏后再外传。
场景三 备份应用 backlog 的业务数据
- 通用思路
- 明确队列介质:内存队列(需应用支持快照/持久化)、磁盘队列(直接拷贝队列文件)、数据库/缓存(按各自工具备份)。
- 选择工具:文件/目录用 rsync/tar,数据库用 mysqldump/Percona XtraBackup,大容量可用 LVM 快照 + rsync,并配合 cron 做定时与保留策略。
- MySQL 示例
- 逻辑备份:mysqldump -u root -p --single-transaction --routines --triggers --databases your_db > /backup/db-$(date +%F).sql
- 物理热备:使用 Percona XtraBackup 的 --backup/–prepare/–copy-back 流程
- 自动化:crontab 定时执行并保留近 N 天;定期做恢复演练验证可用性。
快速选择建议
- 若你要留存的是“内核网络队列配置”:备份 /etc/sysctl.conf 与 iptables/nftables 规则,并记录关键参数值(如 somaxconn、tcp_max_syn_backlog)。
- 若你要留存的是“日志/消息”:优先用 logrotate 做日常轮转与压缩,配合 rsync 或 tar 做离线归档与异地拷贝。
- 若你要留存的是“业务队列数据”:按应用支持的持久化方式导出或拷贝队列文件,数据库类用 mysqldump/XtraBackup/LVM 快照 等标准方案,并定期恢复验证。