Debian数据库回收与空间优化实操指南
一 明确目标与总体思路
二 空间回收步骤
OPTIMIZE TABLE <tbl> 重建表并回收碎片;大表建议在低峰期分批次执行,避免长锁。SHOW BINARY LOGS;PURGE BINARY LOGS BEFORE '2025-12-01 00:00:00';expire_logs_days(MySQL 5.7)或 binlog_expire_logs_seconds(MySQL 8.0+)。RESET MASTER/RESET SLAVE(谨慎)。sudo apt-get clean && sudo apt-get autoclean && sudo apt-get autoremove --purgesudo apt-get autoremove --purge linux-image-<旧版本>sudo journalctl --vacuum-size=100M --vacuum-time=7d;配合 logrotate 控制应用与数据库日志保留策略。ncdu /var/lib/mysql、ncdu /var/log,对确认可删的大文件(如已轮转且已备份的压缩日志)执行清理。lvextend + resize2fs/xfs_growfs,或新增磁盘后迁移数据目录。三 内存回收与内核参数优化
free -m、top/htop、vmstat 1 5 观察 available、buff/cache、si/so(swap 换入/换出)。performance_schema=ON 后查询
sys.memory_global_totalsys.session 的 current_memorysys.memory_by_thread_by_current_bytes、sys.memory_global_by_current_bytessysctl -p 生效)
vm.swappiness=10~20(服务器倾向减少换页,避免性能抖动)vm.vfs_cache_pressure=100~200(提高 VFS 缓存回收倾向,视文件元数据压力调整)vm.dirty_ratio 与 vm.dirty_background_ratio(脏页刷盘阈值,结合I/O能力调优,避免突发写放大)innodb_buffer_pool_size 设为可用内存的**50%~70%**作为起点,结合负载与缓存命中率微调。max_connections,避免过高导致线程/排序/临时表内存膨胀;将 tmp_table_size 与 max_heap_table_size 设为一致(如 64M)并优化SQL以减少磁盘临时表。sort_buffer_size、join_buffer_size,优先通过索引与执行计划优化替代“堆内存放大”。四 数据库配置与维护建议
innodb_buffer_pool_size=16G(示例,按内存与负载调整)、innodb_log_buffer_size=256M;若大量排序/聚合,适度提高 sort_buffer_size/join_buffer_size 并优先用索引优化替代。key_buffer_size 控制在几十MB量级即可,避免占用过多内存。thread_cache_size 提升线程复用;max_connections 结合业务峰值与内存预算设定上限。OPTIMIZE TABLE;更新统计信息,保障执行计划质量。performance_schema 与可视化平台(如 Prometheus + Grafana)建立内存/连接/临时表/缓冲池命中率等关键指标看板,持续验证调优成效。五 安全与变更控制
OPTIMIZE TABLE、参数大幅调整、分区/磁盘扩容)务必在备份与回滚方案就绪后执行,优先在测试环境验证,并在低峰时段实施。