You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
2.0 KiB
56 lines
2.0 KiB
#!/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
|
|
|
|
|