温馨提示×

ubuntu触发器如何备份

小樊
33
2025-12-19 23:48:01
栏目: 智能运维

Ubuntu 备份触发器的实现与数据库触发器备份

一、概念澄清

  • Ubuntu 中,“触发器”通常指两类:
    1. 文件系统事件触发器:当目录或文件发生创建、修改、删除时,自动执行备份或同步(如用 inotifywait + rsync 实时触发)。
    2. 数据库触发器 Trigger:存储在数据库中的对象,随表事件自动执行。备份它需要在导出数据时包含触发器定义(如 mysqldump–triggers 选项)。

二、文件系统事件触发备份(实时)

  • 适用场景:目录内容频繁变化,需要“文件一变就备份/同步”。
  • 思路:用 inotifywait 监听目录事件,触发 rsync 增量同步到备份目录或远端。
  • 快速步骤:
    1. 安装工具 sudo apt update && sudo apt install -y inotify-tools rsync
    2. 创建触发同步脚本 sync_data.sh #!/bin/bash SOURCE_DIR=“/path/to/source” TARGET_DIR=“/path/to/backup” inotifywait -m -r -e create,delete,modify --format ‘%w%f’ “$SOURCE_DIR” | while read FILE; do rsync -avz --delete “$SOURCE_DIR/” “$TARGET_DIR/” done
    3. 赋权并后台运行 chmod +x sync_data.sh nohup ./sync_data.sh &
  • 说明:
    • 该方式“实时”响应事件,适合对变更敏感的数据;如需更稳健,可结合 systemd 服务或 screen/tmux 守护进程运行。

三、定时触发备份(按计划)

  • 适用场景:对实时性要求不高,按天/小时稳定执行备份。
  • 思路:用 cron 定时执行 tarrsync 命令,形成固定频率的备份任务。
  • 快速步骤:
    1. 编辑当前用户的定时任务 crontab -e
    2. 添加计划任务(示例)

      每天 02:00 用 tar 打包备份

      0 2 * * * tar -czvf /backup/backup_$(date +%F).tar.gz /path/to/source

      每 6 小时用 rsync 增量同步

      0 */6 * * * rsync -av --delete /path/to/source/ /path/to/backup/
    3. 如需更复杂逻辑,可将命令写入脚本再交由 cron 执行。
  • 说明:
    • tar 适合归档与压缩;rsync 适合目录间增量同步与镜像。两者均可与 cron 组合实现稳定、可审计的定时备份。

四、数据库触发器的备份(MySQL/MariaDB)

  • 适用场景:需要把业务表上的 触发器 随数据一起备份与恢复。
  • 思路:使用 mysqldump 导出时显式包含触发器定义,并在恢复时一并导入。
  • 快速步骤:
    1. 准备备份专用账号并授予权限(避免在主库日常账号上直接操作) CREATE USER ‘backup_user’@‘%’ IDENTIFIED BY ‘StrongPass!’; GRANT SELECT, SHOW VIEW, TRIGGER, LOCK TABLES, PROCESS ON . TO ‘backup_user’@‘%’; – 若库中有事件调度器,按需授予:GRANT EVENT ON your_db.* TO ‘backup_user’@‘%’; FLUSH PRIVILEGES;
    2. 推荐将凭据写入受控配置文件(权限设为 600) sudo mkdir -p /etc/mysql/conf.d cat >/etc/mysql/conf.d/backup.cnf <<‘EOF’ [client] user=backup_user password=StrongPass! host=127.0.0.1 EOF sudo chmod 600 /etc/mysql/conf.d/backup.cnf
    3. 执行导出(包含触发器;可按需添加 --routines --events) mysqldump --defaults-file=/etc/mysql/conf.d/backup.cnf
      –single-transaction --routines --triggers --events
      -u backup_user your_db > /backup/your_db_$(date +%F).sql
    4. 恢复时直接导入即可,触发器定义会随表一起恢复 mysql -u backup_user -p your_db < /backup/your_db_*.sql
  • 说明:
    • 使用专用备份账号与配置文件,既安全又便于自动化;–triggers 是关键选项,确保触发器被导出。

五、实用建议

  • 保留多份历史与校验:在脚本中加入按日期命名、保留天数、校验(如 sha256sum)与清理旧备份的逻辑。
  • 远程与离线双保险:本地定时备份 + 远端实时/定时同步;关键备份再做离线或云端副本。
  • 监控与告警:记录日志,配合简单监控(如日志关键字告警或 systemd 状态检查),确保任务持续可用。

0