centos

CentOS备份策略怎么制定

小樊
38
2025-05-15 02:53:26
栏目: 智能运维

制定CentOS备份策略是确保数据安全的重要步骤。以下是一个详细的CentOS备份策略,涵盖了备份策略概述、备份方法、关键数据备份、自动化备份脚本、恢复策略、备份验证与测试以及最佳实践建议。

备份策略概述

备份方法

  1. 使用tar命令备份

    • 全系统备份(排除特殊目录):
      tar -cvpzf /backup/centos_full_(date %Y%m%d).tar.gz --exclude=/backup --exclude=/proc --exclude=/lostfound --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev /
      
  2. 使用rsync进行增量备份

    rsync -aAXv --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lostfound","/backup"} / /backup/incremental_backup_(date %Y%m%d)
    
  3. 使用dd命令备份磁盘

    dd if=/dev/sda of=/backup/centos_disk.img bs4M statusprogress
    
  4. 使用Bacula企业级备份方案

    • 安装Baculayum:
      install bacula-director bacula-storage bacula-client bacula-console
      

关键数据备份

  1. 配置文件备份

    • 备份/etc目录:
      tar -czvf /backup/etc_backup_(date %Y%m%d).tar.gz /etc
      
    • 备份重要服务配置:
      cp /etc/ssh/sshd_config /backup/sshd_config_(date %Y%m%d)
      cp /etc/my.cnf /backup/my.cnf_(date %Y%m%d)
      
  2. 数据库备份

    • MySQL/MariaDB备份:
      mysqldump -u root -p --all-databases > /backup/mysql_all_(date %Y%m%d).sql
      mysqldump -u root -p database_name > /backup/database_name_(date %Y%m%d).sql
      
    • PostgreSQL备份:
      pg_dumpall -U postgres > /backup/postgres_all_(date %Y%m%d).sql
      

自动化备份脚本

创建 /usr/local/bin/backup_centos.sh 脚本:

#!/bin/bash
# 定义备份目录
BACKUP_DIR="/backup"
# 获取当前日期
DATE=$(date %Y%m%d)
# 创建备份目录
mkdir -p $BACKUP_DIR/full $BACKUP_DIR/incremental $BACKUP_DIR/db
# 全量备份(每周日执行)
if [ $(date %u) -eq 7 ]; then
    tar -cvpzf $BACKUP_DIR/full/centos_full_$DATE.tar.gz \
        --exclude=/backup \
        --exclude=/proc \
        --exclude=/lostfound \
        --exclude=/sys \
        --exclude=/mnt \
        --exclude=/media \
        --exclude=/dev /
fi
# 增量备份(每日执行)
rsync -aAXv --delete \
    --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lostfound","/backup"} \
    / $BACKUP_DIR/incremental/$DATE
# 数据库备份
mysqldump -u root -pYOURPASSWORD --all-databases > $BACKUP_DIR/db/mysql_all_$DATE.sql
pg_dumpall -U postgres > $BACKUP_DIR/db/postgres_all_$DATE.sql
# 保留30天备份
find $BACKUP_DIR/full -mtime 30 -delete
find $BACKUP_DIR/incremental -mtime 30 -delete
find $BACKUP_DIR/db -mtime 30 -delete

添加到crontab自动执行:

0 2 * * * /usr/local/bin/backup_centos.sh

恢复策略

  1. 从tar备份恢复

    • 进入救援模式或Live CD环境:
      tar -xvpzf /backup/centos_full_YYYYMMDD.tar.gz -C /
      
  2. 从rsync备份恢复

    rsync -aAXv /backup/incremental_backup_YYYYMMDD/ /
    
  3. 从dd镜像恢复

    dd if=/backup/centos_disk.img of=/dev/sda bs4M statusprogress
    
  4. 数据库恢复

    • MySQL恢复:
      mysql -u root -p /backup/mysql_all_YYYYMMDD.sql
      
    • PostgreSQL恢复:
      psql -U postgres -f /backup/postgres_all_YYYYMMDD.sql
      

备份验证与测试

最佳实践建议

通过实施以上策略,可以确保CentOS系统在遭遇硬件故障、人为错误或安全事件时能够快速恢复,最大限度保障业务连续性。

0
看了该问题的人还看了