1 changed files with 56 additions and 0 deletions
@ -0,0 +1,56 @@ |
|||
#!/bin/bash |
|||
|
|||
# 设置数据库配置 |
|||
USER="root" |
|||
PASSWORD="pass" |
|||
DEFAULTS_FILE="/etc/my.cnf" # 指定你的配置文件 |
|||
#DATADIR="/var/lib/mysql" |
|||
BASE_BACKUP_DIR="/www/embk/xtr" |
|||
SOCKET_FILE="/tmp/mysql.sock" |
|||
|
|||
# 获取当前日期 |
|||
CURRENT_DATE=$(date +%Y-%m-%d) |
|||
FULL_BACKUP_DIR="$BASE_BACKUP_DIR/full_$CURRENT_DATE" |
|||
FULL_BACKUP_LOG="$BASE_BACKUP_DIR/log_full_$CURRENT_DATE.log" |
|||
INCREMENTAL_BACKUP_DIR="$BASE_BACKUP_DIR/incremental_$CURRENT_DATE" |
|||
INCREMENTAL_BACKUP_LOG="$BASE_BACKUP_DIR/log_incremental_$CURRENT_DATE.log" |
|||
|
|||
## check directory has exists |
|||
if [ -e $FULL_BACKUP_DIR ]; then |
|||
echo $FULL_BACKUP_DIR"exists!" |
|||
else |
|||
mkdir -p $FULL_BACKUP_DIR |
|||
fi |
|||
|
|||
if [ ! -e $INCREMENTAL_BACKUP_DIR ];then |
|||
mkdir -p $INCREMENTAL_BACKUP_DIR |
|||
fi |
|||
|
|||
|
|||
|
|||
# 检查是否为周日 |
|||
if [ "$(date +%u)" -eq 7 ]; then |
|||
# 周日进行全量备份 |
|||
echo "Starting full backup..." |
|||
xtrabackup --defaults-file="$DEFAULTS_FILE" --backup --target-dir="$FULL_BACKUP_DIR" --user="$USER" --password="$PASSWORD" --socket="$SOCKET_FILE" --compress --compress-threads=2 > "$FULL_BACKUP_LOG" 2>&1 |
|||
echo "Full backup completed." |
|||
else |
|||
# 其他天进行增量备份 |
|||
LAST_FULL_DIR=$(ls -d "$BASE_BACKUP_DIR/full_"* | sort | tail -n 1) |
|||
LAST_INCREMENTAL_DIR=$(ls -d "$BASE_BACKUP_DIR/incremental_"* | sort | tail -n 1) |
|||
|
|||
if [ -z "$LAST_FULL_DIR" ]; then |
|||
echo "No previous full backup found. Exiting." |
|||
exit 1 |
|||
fi |
|||
|
|||
if [ -z "$LAST_INCREMENTAL_DIR" ]; then |
|||
echo "No previous incremental backup found. Using the last full backup for the base." |
|||
LAST_INCREMENTAL_DIR="$LAST_FULL_DIR" |
|||
fi |
|||
|
|||
echo "Starting incremental backup based on $LAST_INCREMENTAL_DIR..." |
|||
xtrabackup --defaults-file="$DEFAULTS_FILE" --backup --no-lock --target-dir="$INCREMENTAL_BACKUP_DIR" --incremental-basedir="$LAST_INCREMENTAL_DIR" --user="$USER" --password="$PASSWORD" --socket="$SOCKET_FILE" --compress > "$INCREMENTAL_BACKUP_LOG" 2>&1 |
|||
echo "Incremental backup completed." |
|||
fi |
|||
|
|||
Loading…
Reference in new issue