From ffc46adc8b6f9d6706c89aebb43d80a605ebb355 Mon Sep 17 00:00:00 2001 From: "zhangkun9038@dingtalk.com" Date: Fri, 14 Jul 2023 16:48:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E9=87=8F=E5=BC=8F=E5=A4=87=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backUpIncremental.sh | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 backUpIncremental.sh 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