diff --git a/backUpIncremental.sh b/backUpIncremental.sh new file mode 100644 index 0000000..8045436 --- /dev/null +++ b/backUpIncremental.sh @@ -0,0 +1,38 @@ +#!/bin/bash +currentTime=$(date +"%Y-%m-%d-%H") +userName=$1 +password=$2 +dbName=$3 +host=$4 +# 定义备份文件存放目录 +backUpPath=$5 +ossPath=$6 + + +# 获取上次备份的binlog文件名和位置 +LAST_BACKUP=$(cat "$backUpPath/last_backup.txt") +LAST_BINLOG=$(echo "$LAST_BACKUP" | awk '{print $1}') +LAST_POSITION=$(echo "$LAST_BACKUP" | awk '{print $2}') + +# 获取当前binlog文件名和位置 +CURRENT_BINLOG=$(mysql -N -e "SHOW MASTER STATUS" | awk '{print $1}') +CURRENT_POSITION=$(mysql -N -e "SHOW MASTER STATUS" | awk '{print $2}') + +# 备份增量变更到文件 +# 如果上次备份的binlog文件名和位置为空,则进行全量备份 +cd $backUpPath +#if [ -z "$LAST_BINLOG" ]; then +# mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD -h $MYSQL_HOST $MYSQL_DATABASE > "$BACKUP_DIR/full_backup.sql" +#else + mysqlbinlog --start-position=$LAST_POSITION --stop-position=$CURRENT_POSITION --result-file="$backUpPath/$dbName-$currentTime.sql" $LAST_BINLOG +#fi +# 更新上次备份的binlog文件名和位置 +echo "$CURRENT_BINLOG $CURRENT_POSITION" > "last_backup.txt" + +# 获取备份文件列表 +backup_files=($(find "$backUpPath" -name "$dbName-*.sql" -type f -printf "%f\n")) + +# 打印备份文件列表 +for file in "${backup_files[@]}"; do + echo "$file" +done