xtrabackup全量备份与恢复脚本
备份
#!/bin/bash
BACKUP_DIR="/data/backup/full_$(date +%F-%H%M%S)"
USER="backup_user"
PASS="your_password"
HOST="you_host"
echo "开始备份,备份目录:$BACKUP_DIR"
xtrabackup --backup --host=$HOST --user=$USER --password=$PASS --target-dir=$BACKUP_DIR
if [ $? -ne 0 ]; then
echo "备份失败!"
exit 1
fi
echo "备份完成,开始准备备份数据"
xtrabackup --prepare --target-dir=$BACKUP_DIR
if [ $? -ne 0 ]; then
echo "准备备份数据失败!"
exit 1
fi
echo "备份准备完成,备份成功!"
恢复:
#!/bin/bash
BACKUP_DIR="/data/backup/full_2025-08-07-101530"
echo "停止 MySQL 服务"
systemctl stop mysql
if [ $? -ne 0 ]; then
echo "停止服务失败!"
exit 1
fi
echo "清空 MySQL 数据目录"
rm -rf /var/lib/mysql/*
echo "拷贝备份数据"
xtrabackup --copy-back --target-dir=$BACKUP_DIR
if [ $? -ne 0 ]; then
echo "恢复数据失败!"
exit 1
fi
echo "修正目录权限"
chown -R mysql:mysql /var/lib/mysql
echo "启动 MySQL 服务"
systemctl start mysql
if [ $? -ne 0 ]; then
echo "启动服务失败!"
exit 1
fi
echo "恢复完成!"