centos

CentOS Trigger恢复策略

小樊
42
2025-12-13 17:24:14
栏目: 智能运维

CentOS Trigger恢复策略

一 概念澄清与总体思路

二 场景化恢复策略一览

场景 快速定位 立即止血 修复动作 验证要点
数据库触发器(MySQL/MariaDB)不可用 查看错误日志与触发器定义;在测试库复现 暂停相关写入/切换只读副本 SHOW CREATE TRIGGER 核对定义;修正触发逻辑或依赖;必要时回滚版本 执行代表性 DML 验证触发结果;检查主从一致性
systemd 服务触发器(自定义 trigger.service) systemctl statusjournalctl -u 查看单元日志 必要时 systemctl stop 隔离故障 修正单元文件(ExecStart/Type/Restart 等);systemctl daemon-reloadsystemctl restart 观察状态与日志是否恢复正常;检查依赖 systemctl list-dependencies
cron 定时触发器未执行 /var/log/crongrep CRON /var/log/messages 临时注释任务避免重复失败 校正脚本 shebang、路径与环境变量;在 crontab 中显式设置 PATH;手动执行脚本验证 等待下一个周期或临时手动触发;确认输出与返回值
误删文件后的“恢复触发” 确认文件系统类型(lsblk -f)与分区是否仍挂载 立刻停止对目标分区写入;条件允许先卸载或做只读快照 EXT3/EXT4extundeleteXFSxfs_undelete;也可用 TestDisk/PhotoRec 核对恢复文件完整性与时间戳;先恢复到非原路径再比对
系统级故障导致触发器不可用(无法启动/进入救援) 进入 GRUB 编辑或安装介质救援模式 只读挂载根分区,避免 fsck 改写 修复 MBR/GRUBfsck 文件系统、重置 root 密码;必要时 chroot 修复配置 能正常引导到多用户;关键服务与触发器可启动

上述表格中的定位与修复动作要点,分别来源于对 Linux 触发器/任务排障、日志与依赖检查、systemd 与 cron 的常用方法,以及 EXT3/EXT4 与 XFS 的文件恢复工具与注意事项。

三 关键操作要点

四 最小可行应急脚本示例

#!/usr/bin/env bash
set -Eeuo pipefail

SERVICE="trigger.service"
LOGFILE="/var/log/trigger-recovery-$(date +%F_%T).log"

exec >"$LOGFILE" 2>&1

echo "[$(date)] 开始触发器恢复:$SERVICE"

# 1) 状态与日志
echo "## systemctl status"
systemctl status -l "$SERVICE" || true

echo "## journalctl -u"
journalctl -u "$SERVICE" -e --no-pager || true

# 2) 依赖检查
echo "## 依赖"
systemctl list-dependencies "$SERVICE" || true

# 3) 尝试重启
echo "## 尝试重启"
if systemctl restart "$SERVICE"; then
  echo "重启成功"
else
  echo "重启失败,请检查上面的日志与依赖"
  exit 1
fi

# 4) 最终状态
echo "## 最终状态"
systemctl status -l "$SERVICE" || true
#!/usr/bin/env bash
set -Eeuo pipefail

PART="/dev/sdXN"   # 替换为实际分区
OUTDIR="./RECOVERED_FILES_$(date +%F_%H%M%S)"
TO_RESTORE="/path/to/lost_file"  # 单个文件;留空则全量

# 0) 建议先对分区做只读快照或卸载
# umount "$PART" || true

# 1) 安装工具(若未安装)
if ! command -v extundelete >/dev/null 2>&1; then
  yum install -y e2fsprogs-devel gcc-c++ make autoconf automake
  # 编译安装 extundelete(示例路径,可按需调整)
  curl -L -o /tmp/extundelete.tar.bz2 \
    "https://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2"
  tar xjf /tmp/extundelete.tar.bz2 -C /tmp
  pushd /tmp/extundelete-0.2.4
  ./configure --prefix=/usr/local/extundelete && make -j"$(nproc)" && make install
  popd
  ln -sf /usr/local/extundelete/bin/extundelete /usr/local/bin/extundelete
fi

# 2) 恢复
mkdir -p "$OUTDIR"
if [[ -n "$TO_RESTORE" ]]; then
  extundelete --restore-file "$TO_RESTORE" "$PART" -o "$OUTDIR"
else
  extundelete --restore-all "$PART" -o "$OUTDIR"
fi

echo "恢复完成,文件在:$OUTDIR"

0
看了该问题的人还看了