cd /tmp
wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.33-28/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.33-28.1.el7.x86_64.rpm
yum -y localinstall percona-xtrabackup-80-8.0.33-28.1.el7.x86_64.rpm
xtrabackup --version

yum -y install python3-pip
pip3 install awscli
chown swadmin:swadmin /usr/local/bin/aws #这个是给普通用户授权,如果你使用root用户执行脚本就不需要这个。
su - swadmin -c "/usr/local/bin/aws configure set aws_access_key_id AK.........."
su - swadmin -c "/usr/local/bin/aws configure set aws_secret_access_key j7............."
su - swadmin -c "/usr/local/bin/aws configure set default.region sa-east-1" #这个是AWS桶的区域
su - swadmin -c "/usr/local/bin/aws configure set default.output json"
mysql="$(ps -ef | grep mysql | grep -v grep | awk '{for (i=1; i<=NF; i++) if ($i ~ /\/bin\/mysqld/) {sub(/\/bin\/mysqld/, ""); print $i; exit}}')/bin/mysql"
sock=$(find / -name mysql.sock -not -path "/tmp/*" 2>/dev/null)
passwd='密码'
sql_command="GRANT BACKUP_ADMIN ON *.* TO 'root'@'localhost'; FLUSH PRIVILEGES;"
$mysql -uroot -p$passwd -S $sock -e "$sql_command"
脚本有两个地方需要修改的
一个是桶的名字
一个是你的mysql密码
vim /tmp/backup_script.sh
#!/bin/bash
file_path="/tmp/backup_script.sh"
#xtrabackup安装目录
XTRABACKUP_DIR="/usr/bin"
#备份存放目录
BACKUP_DIR="/tmp/backup"
#mysql安装目录
MYSQL_DIR=$(find / -type d -name mysql 2>/dev/null | grep "apps/mysql$" | grep -v '/tmp/')
#配置文件目录
MYSQL_CNF="$(ps -ef | grep mysql | grep -v grep | awk '{for (i=1; i<=NF; i++) if ($i ~ /--defaults-file=/) {sub(/--defaults-file=/, ""); print $i; exit}}' | xargs dirname)/my_16303.cnf"
#数据库用户
MYSQL_USER="root"
#数据库密码
MYSQL_PASSWORD="passwd"
#数据库端口
MYSQL_PORT=16303
#数据库sock文件
MYSQL_SOCK=$(find / -name mysql.sock -not -path "/tmp/*" 2>/dev/null)
#Mysql客户端路径
mysql="$(ps -ef | grep mysql | grep -v grep | awk '{for (i=1; i<=NF; i++) if ($i ~ /\/bin\/mysqld/) {sub(/\/bin\/mysqld/, ""); print $i; exit}}')/bin/mysql"
## S3存储桶名称
S3_BUCKET="s3_name" #AWS上的桶名
#取租户的名字
zuhu_name=$(echo "$S3_BUCKET" | cut -d'-' -f1)
## 当前天
CURRENT_DATE=$(date +%F)
## 当前小时(以24小时制表示)
CURRENT_HOUR=$(date +%H)
## AWS CLI 命令路径
aws_cmd="/usr/local/bin/aws"
##Telegram参数
url="https://api.telegram.org/bot..........:AA............/sendMessage"
chat_id="-10........."
function full_backup(){
## 描述:xtrabackup 全库备份
PARA1=$CURRENT_DATE
## 开始时间
START_TIME=$(date +"%s")
## 当前日期作为备份文件名后缀
BACKUP_SUFFIX=$(date +"%Y%m%d%H")
if [ ! -d "$BACKUP_DIR/$PARA1/full" ]; then
mkdir $BACKUP_DIR/$PARA1/full -p
## 全库备份
echo $(date "+%Y-%m-%d %H:%M:%S")" [Info] --> 开始完整备份。"
$XTRABACKUP_DIR/xtrabackup --defaults-file=$MYSQL_CNF -u$MYSQL_USER -p$MYSQL_PASSWORD -S$MYSQL_SOCK --backup --target-dir=$BACKUP_DIR/$PARA1/full > $BACKUP_DIR/$PARA1/full/full_backup_$BACKUP_SUFFIX.log 2>&1
echo $(date "+%Y-%m-%d %H:%M:%S")" [Info] --> 备份日志位于 $BACKUP_DIR/$PARA1/full/full_backup_$BACKUP_SUFFIX.log."
echo $(date "+%Y-%m-%d %H:%M:%S")" [Info] --> 备份完成,大小: $(du $BACKUP_DIR/$PARA1 --max-depth=1 -hl | grep 'full' | awk '{print $1}')."
echo $(date "+%Y-%m-%d %H:%M:%S")" [Info] --> 备份完成,使用时间: "$(($(date +"%s") - $START_TIME))" 秒."
##加密压缩
tar czf - $BACKUP_DIR/$PARA1/full | openssl enc -aes-256-cbc -e -pass 'pass:密码' -out $BACKUP_DIR/$PARA1/full_$BACKUP_SUFFIX.tar.gz.enc
## 把打包好的全量备份压缩包上传到AWS S3
$aws_cmd s3 cp $BACKUP_DIR/$PARA1/full_$BACKUP_SUFFIX.tar.gz.enc s3://$S3_BUCKET/
else
echo $(date "+%Y-%m-%d %H:%M:%S")" [Info] --> 当前小时的完整备份目录已存在。."
echo ''
fi
}
function incremental_backup(){
PARA1=$CURRENT_DATE
START_TIME=$(date +"%s")
BACKUP_SUFFIX=$(date +"%Y%m%d%H")
if [ -d "$BACKUP_DIR/$PARA1/full" ]; then
if [ -d "$BACKUP_DIR/$PARA1/incremental" ]; then
# 获取上一个增量备份目录
LAST_INCREMENTAL_DIR=$(ls -td $BACKUP_DIR/$PARA1/incremental/* | head -n 1)
else
# 如果没有上一个增量备份,将上一个全量备份用作基础备份
LAST_INCREMENTAL_DIR="$BACKUP_DIR/$PARA1/full"
fi
# 创建当前增量备份目录
mkdir -p "$BACKUP_DIR/$PARA1/incremental/$BACKUP_SUFFIX"
# 执行增量备份
echo $(date "+%Y-%m-%d %H:%M:%S")" [Info] --> 开始增量备份。"
$XTRABACKUP_DIR/xtrabackup --defaults-file="$MYSQL_CNF" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -S"$MYSQL_SOCK" --backup --target-dir="$BACKUP_DIR/$PARA1/incremental/$BACKUP_SUFFIX" --incremental-basedir="$LAST_INCREMENTAL_DIR" > "$BACKUP_DIR/$PARA1/incremental/$BACKUP_SUFFIX/incremental_backup_$BACKUP_SUFFIX.log" 2>&1
##加密压缩
tar czf - "$BACKUP_DIR/$PARA1/incremental/$BACKUP_SUFFIX" | openssl enc -aes-256-cbc -e -pass 'pass:密码' -out "$BACKUP_DIR/$PARA1/incremental/$BACKUP_SUFFIX/incremental_backup_$BACKUP_SUFFIX.tar.gz.enc"
#上传增量备份到AWS S3
"$aws_cmd" s3 cp "$BACKUP_DIR/$PARA1/incremental/$BACKUP_SUFFIX/incremental_backup_$BACKUP_SUFFIX.tar.gz.enc" "s3://$S3_BUCKET/"
echo $(date "+%Y-%m-%d %H:%M:%S")" [Info] --> 备份日志位于 $BACKUP_DIR/$PARA1/incremental/$BACKUP_SUFFIX/incremental_backup_$BACKUP_SUFFIX.log."
echo $(date "+%Y-%m-%d %H:%M:%S")" [Info] --> 备份完成,大小: $(du "$BACKUP_DIR/$PARA1/incremental/$BACKUP_SUFFIX" --max-depth=1 -hl | grep 'incremental' | awk '{print $1}')."
echo $(date "+%Y-%m-%d %H:%M:%S")" [Info] --> 备份完成,使用时间: "$(($(date +"%s") - $START_TIME))" 秒."
echo ''
else
echo '检测到当天没有全量备份,开始执行一次全量备份'
full_backup
fi
}
function Delete_previous_backup_files() {
# 获取当前日期
current_date=$(date +"%Y-%m-%d")
# 遍历所有备份目录
for backup_dir in "$BACKUP_DIR"/*; do
# 提取目录名的日期部分(假设目录名的格式为 YYYY-MM-DD)
dir_date=$(basename "$backup_dir")
# 检查目录是否不是今天的日期
if [ "$dir_date" != "$current_date" ]; then
# 检查目录是否存在
if [ -d "$backup_dir" ]; then
echo "删除备份目录及其内容: $backup_dir"
# 递归删除目录及其内容
rm -rf "$backup_dir"
# 再次确认目录是否存在
if [ -d "$backup_dir" ]; then
echo "再次确认,删除失败: $backup_dir"
else
echo "$backup_dir 已经删除!!"
fi
else
echo "跳过不存在的目录: $backup_dir"
fi
fi
done
}
function delete_seven_days_ago(){
#-------------------------------------------
## 描述:使用AWS命令删除S3桶内7天前的备份文件
#-------------------------------------------
# 7天前的日期
seven_days_ago=$(date -d "7 days ago" +%Y%m%d%H) # 包含小时部分
# 列出存储桶中的文件
files=$($aws_cmd s3 ls s3://$S3_BUCKET/)
while read -r line; do
# 获取文件名
file_name=$(echo "$line" | awk '{print $4}')
# 提取文件名中的时间部分
time_part=$(echo "$file_name" | grep -oE '[0-9]{10}')
# 如果没有找到时间部分,尝试提取另一种格式
if [ -z "$time_part" ]; then
time_part=$(echo "$file_name" | grep -oE 'incremental_backup_[0-9]{10}' | cut -d '_' -f 3)
fi
# 检查文件时间是否早于7天前
if [[ -n "$time_part" && "$time_part" < "$seven_days_ago" ]]; then
echo "Deleting $file_name..."
# 删除文件
$aws_cmd s3 rm "s3://$S3_BUCKET/$file_name"
echo "File $file_name deleted."
fi
done <<< "$files"
}
function check_and_perform_full_backup() {
## 描述:检查当前时间,如果是凌晨2点则执行全量备份
# 获取当前小时
current_hour=$(date +"%H")
# 判断是否是凌晨2点(时钟24小时制,2点表示为"02")
if [ "$current_hour" -eq "02" ]; then
echo "当前时间是凌晨 2 点,正在启动完整备份..."
full_backup # 调用执行全量备份的函数
delete_seven_days_ago #调用删除S3桶内7天前的备份文件函数
else
echo "当前时间不是凌晨2点,没有安排完整备份。"
fi
}
function check_backup_status_and_telegram() {
## 描述: 检查备份是否成功并发送 Telegram 告警
full_backup_log="$BACKUP_DIR/$PARA1/full/full_backup_$BACKUP_SUFFIX.log"
incremental_backup_log="$BACKUP_DIR/$PARA1/incremental/$BACKUP_SUFFIX/incremental_backup_$BACKUP_SUFFIX.log"
message_full="全量备份 $zuhu_name 完成,但可能出现问题,请检查备份日志。"
message_incremental="增量备份 $zuhu_name 完成,但可能出现问题,请检查备份日志。"
# 检查全量备份日志是否不包含 "completed OK"
if ! grep -q "completed OK" "$full_backup_log"; then
# 发送全量备份告警消息
response=$(curl -s -d "chat_id=$chat_id&text=$message_full" "$url")
fi
# 检查增量备份日志是否不包含 "completed OK"
if ! grep -q "completed OK" "$incremental_backup_log"; then
# 发送增量备份告警消息
response=$(curl -s -d "chat_id=$chat_id&text=$message_incremental" "$url")
fi
}
function check_mysql_slave_status() {
# 描述: 检查当前从库的状态是否正常
while true; do
# 使用MySQL客户端检查从库的主从状态
if $mysql -uroot -p$MYSQL_PASSWORD -S$MYSQL_SOCK -e 'show slave status\G' | grep -q 'Slave_IO_Running: Yes' && $mysql -uroot -p$MYSQL_PASSWORD -S$MYSQL_SOCK -e 'show slave status\G' | grep -q 'Slave_SQL_Running: Yes'; then
# 主从状态都为 "Yes" 时,执行其他函数
check_and_perform_full_backup
incremental_backup
check_backup_status_and_telegram
# 主从同步状态正常,退出循环
break
else
# 主从状态不都为 "Yes",发送告警
message_slave="$zuhu_name 主从同步当前状态出现异常!"
response=$(curl -s -d "chat_id=$chat_id&text=$message_slave" "$url")
sleep 60
fi
done
}
delete_file_if_exists() {
if [ -e "$file_path" ]; then
rm -rf "$file_path"
if [ $? -ne 0 ]; then
echo "$zuhu_name 无法删除文件:$file_path"
fi
else
echo "文件不存在:$file_path"
fi
}
#第一不先执行检查主从状态的函数
check_mysql_slave_status
#删除昨天的所有日期的备份目录
Delete_previous_backup_files
chmod +x /data/backup/backup_script.sh
需求是,一天全量备份一次,一小时增量备份一次。
定时任务这里设置了每小时执行一次,一天一次的备份在脚本里面判断执行。
0 * * * * cd /data/backup/ && ./backup_script.sh >> /data/backup/crontab_backup.log 2>> /data/backup/crontab_backup_error.log

yum -y install shc
cd /data/backup/
shc -f backup_script.sh
rm -rf backup_script.sh

使用 shc 工具编译backup_script.sh 脚本,并删除了原始脚本文件,因为这样可以保护脚本的源代码。
下次执行backup_script.sh.x
这个脚本是结合Jenkins使用,在Jenkins上构建定时任务,下发到数据库服务器上执行脚本。
#!/bin/bash
#脚本定义在这个地方
file_path="/tmp/backup_script.sh"
#xtrabackup安装目录
XTRABACKUP_DIR="/usr/bin"
#备份存放目录
BACKUP_DIR="/tmp/backup"
#mysql安装目录
MYSQL_DIR=$(find / -type d -name mysql 2>/dev/null | grep "apps/mysql$" | grep -v '/tmp/')
#配置文件目录
MYSQL_CNF="$(ps -ef | grep mysql | grep -v grep | awk '{for (i=1; i<=NF; i++) if ($i ~ /--defaults-file=/) {sub(/--defaults-file=/, ""); print $i; exit}}' | xargs dirname)/my_16303.cnf"
#数据库用户
MYSQL_USER="root"
#数据库密码
MYSQL_PASSWORD="密码"
#数据库端口
MYSQL_PORT=16303
#数据库sock文件
MYSQL_SOCK=$(find / -name mysql.sock -not -path "/tmp/*" -not -path "*bak*" -not -type d 2>/dev/null)
#Mysql客户端路径
mysql="$(ps -ef | grep mysql | grep -v grep | awk '{for (i=1; i<=NF; i++) if ($i ~ /\/bin\/mysqld/) {sub(/\/bin\/mysqld/, ""); print $i; exit}}')/bin/mysql"
## S3存储桶名称
S3_BUCKET="$1" #外部传入AWS上的桶名
#取租户的名字
zuhu_name=$(echo "$S3_BUCKET" | cut -d'-' -f1)
## 当前天
CURRENT_DATE=$(date +%F)
## 当前小时(以24小时制表示)
CURRENT_HOUR=$(date +%H)
## AWS CLI 命令路径
aws_cmd="/usr/local/bin/aws"
function full_backup() {
# 描述:xtrabackup 全库备份
PARA1="$CURRENT_DATE"
# 开始时间
START_TIME=$(date +"%s")
# 当前日期作为备份文件名后缀
BACKUP_SUFFIX=$(date +"%Y%m%d%H")
if [ ! -d "$BACKUP_DIR/$PARA1/full" ]; then
mkdir "$BACKUP_DIR/$PARA1/full" -p
# 全库备份
echo "$(date "+%Y-%m-%d %H:%M:%S") [Info] --> 开始完整备份。"
$XTRABACKUP_DIR/xtrabackup --defaults-file="$MYSQL_CNF" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -S"$MYSQL_SOCK" --backup --target-dir="$BACKUP_DIR/$PARA1/full" > "$BACKUP_DIR/$PARA1/full/full_backup_$BACKUP_SUFFIX.log" 2>&1
echo "$(date "+%Y-%m-%d %H:%M:%S") [Info] --> 备份日志位于 $BACKUP_DIR/$PARA1/full/full_backup_$BACKUP_SUFFIX.log."
echo "$(date "+%Y-%m-%d %H:%M:%S") [Info] --> 备份完成,大小: $(du "$BACKUP_DIR/$PARA1" --max-depth=1 -hl | grep 'full' | awk '{print $1}')."
echo "$(date "+%Y-%m-%d %H:%M:%S") [Info] --> 备份完成,使用时间: $(( $(date +"%s") - $START_TIME )) 秒."
# 加密压缩
tar czPf - "$BACKUP_DIR/$PARA1/full" | openssl enc -aes-256-cbc -e -pass 'pass:密码' -out "$BACKUP_DIR/$PARA1/full_$BACKUP_SUFFIX.tar.gz.enc"
# 把打包好的全量备份压缩包上传到AWS S3
$aws_cmd s3 cp "$BACKUP_DIR/$PARA1/full_$BACKUP_SUFFIX.tar.gz.enc" "s3://$S3_BUCKET/"
if [ $? -eq 0 ]; then
echo "备份文件上传成功。"
else
echo "备份文件上传S3失败"
fi
else
echo "$(date "+%Y-%m-%d %H:%M:%S") [Info] --> 当前小时的完整备份目录已存在。."
echo ''
fi
}
function incremental_backup(){
PARA1=$CURRENT_DATE
START_TIME=$(date +"%s")
BACKUP_SUFFIX=$(date +"%Y%m%d%H")
if [ -d "$BACKUP_DIR/$PARA1/full" ]; then
if [ -d "$BACKUP_DIR/$PARA1/incremental" ]; then
# 获取上一个增量备份目录
LAST_INCREMENTAL_DIR=$(ls -td $BACKUP_DIR/$PARA1/incremental/* | head -n 1)
else
# 如果没有上一个增量备份,将上一个全量备份用作基础备份
LAST_INCREMENTAL_DIR="$BACKUP_DIR/$PARA1/full"
fi
# 创建当前增量备份目录
mkdir -p "$BACKUP_DIR/$PARA1/incremental/$BACKUP_SUFFIX"
# 执行增量备份
echo $(date "+%Y-%m-%d %H:%M:%S")" [Info] --> 开始增量备份。"
$XTRABACKUP_DIR/xtrabackup --defaults-file="$MYSQL_CNF" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -S"$MYSQL_SOCK" --backup --target-dir="$BACKUP_DIR/$PARA1/incremental/$BACKUP_SUFFIX" --incremental-basedir="$LAST_INCREMENTAL_DIR" > "$BACKUP_DIR/$PARA1/incremental/$BACKUP_SUFFIX/incremental_backup_$BACKUP_SUFFIX.log" 2>&1
##加密压缩
tar czPf - "$BACKUP_DIR/$PARA1/incremental/$BACKUP_SUFFIX" | openssl enc -aes-256-cbc -e -pass 'pass:密码' -out "$BACKUP_DIR/$PARA1/incremental/$BACKUP_SUFFIX/incremental_backup_$BACKUP_SUFFIX.tar.gz.enc"
#上传增量备份到AWS S3
"$aws_cmd" s3 cp "$BACKUP_DIR/$PARA1/incremental/$BACKUP_SUFFIX/incremental_backup_$BACKUP_SUFFIX.tar.gz.enc" "s3://$S3_BUCKET/"
if [ $? -eq 0 ]; then
echo "备份文件上传成功。"
else
echo "备份文件上传S3失败"
fi
echo $(date "+%Y-%m-%d %H:%M:%S")" [Info] --> 备份日志位于 $BACKUP_DIR/$PARA1/incremental/$BACKUP_SUFFIX/incremental_backup_$BACKUP_SUFFIX.log."
echo $(date "+%Y-%m-%d %H:%M:%S")" [Info] --> 备份完成,大小: $(du "$BACKUP_DIR/$PARA1/incremental/$BACKUP_SUFFIX" --max-depth=1 -hl | grep 'incremental' | awk '{print $1}')."
echo $(date "+%Y-%m-%d %H:%M:%S")" [Info] --> 备份完成,使用时间: "$(($(date +"%s") - $START_TIME))" 秒."
echo ''
else
echo '检测到当天没有全量备份,开始执行一次全量备份'
full_backup
fi
}
function Delete_previous_backup_files() {
# 获取当前日期
current_date=$(date +"%Y-%m-%d")
# 遍历所有备份目录
for backup_dir in "$BACKUP_DIR"/*; do
# 提取目录名的日期部分(假设目录名的格式为 YYYY-MM-DD)
dir_date=$(basename "$backup_dir")
# 检查目录是否不是今天的日期
if [ "$dir_date" != "$current_date" ]; then
# 检查目录是否存在
if [ -d "$backup_dir" ]; then
echo "删除备份目录及其内容: $backup_dir"
# 递归删除目录及其内容
rm -rf "$backup_dir"
# 再次确认目录是否存在
if [ -d "$backup_dir" ]; then
echo "再次确认,删除失败: $backup_dir"
else
echo "$backup_dir 已经删除!!"
fi
else
echo "跳过不存在的目录: $backup_dir"
fi
fi
done
}
function delete_seven_days_ago(){
#-------------------------------------------
## 描述:使用AWS命令删除S3桶内7天前的备份文件
#-------------------------------------------
# 7天前的日期
seven_days_ago=$(date -d "7 days ago" +%Y%m%d%H) # 包含小时部分
# 列出存储桶中的文件
files=$($aws_cmd s3 ls s3://$S3_BUCKET/)
while read -r line; do
# 获取文件名
file_name=$(echo "$line" | awk '{print $4}')
# 提取文件名中的时间部分
time_part=$(echo "$file_name" | grep -oE '[0-9]{10}')
# 如果没有找到时间部分,尝试提取另一种格式
if [ -z "$time_part" ]; then
time_part=$(echo "$file_name" | grep -oE 'incremental_backup_[0-9]{10}' | cut -d '_' -f 3)
fi
# 检查文件时间是否早于7天前
if [[ -n "$time_part" && "$time_part" < "$seven_days_ago" ]]; then
echo "Deleting $file_name..."
# 删除文件
$aws_cmd s3 rm "s3://$S3_BUCKET/$file_name"
echo "File $file_name deleted."
fi
done <<< "$files"
}
function check_and_perform_full_backup() {
## 描述:检查当前时间,如果是凌晨2点则执行全量备份
# 获取当前小时
current_hour=$(date +"%H")
# 判断是否是凌晨2点(时钟24小时制,2点表示为"02")
if [ "$current_hour" -eq "02" ]; then
echo "当前时间是凌晨 2 点,正在启动完整备份..."
full_backup # 调用执行全量备份的函数
delete_seven_days_ago #调用删除S3桶内7天前的备份文件函数
else
echo "当前时间不是凌晨2点,没有安排完整备份。"
fi
}
function check_backup_status_and_telegram() {
## 描述: 检查备份是否成功并发送 Telegram 告警
BACKUP_SUFFIX=$(date +"%Y%m%d%H")
PARA1="$CURRENT_DATE"
full_backup_log="$BACKUP_DIR/$PARA1/full/full_backup_$BACKUP_SUFFIX.log"
incremental_backup_log="$BACKUP_DIR/$PARA1/incremental/$BACKUP_SUFFIX/incremental_backup_$BACKUP_SUFFIX.log"
message_full="全量备份 $zuhu_name 完成,但可能出现问题,请检查备份日志。"
message_incremental="增量备份 $zuhu_name 完成,但可能出现问题,请检查备份日志。"
# 检查全量备份日志是否不包含 "completed OK"
if ! grep -q "completed OK" "$full_backup_log"; then
# 发送全量备份告警消息
echo "$message_full"
fi
# 检查增量备份日志是否不包含 "completed OK"
if ! grep -q "completed OK" "$incremental_backup_log"; then
# 发送增量备份告警消息
echo "$message_incremental"
fi
}
function check_mysql_slave_status() {
# 描述: 检查当前从库的状态是否正常
while true; do
# 使用MySQL客户端检查从库的主从状态
if $mysql -uroot -p$MYSQL_PASSWORD -S$MYSQL_SOCK -e 'show slave status\G' | grep -q 'Slave_IO_Running: Yes' && $mysql -uroot -p$MYSQL_PASSWORD -S$MYSQL_SOCK -e 'show slave status\G' | grep -q 'Slave_SQL_Running: Yes'; then
# 主从状态都为 "Yes" 时,执行其他函数
check_and_perform_full_backup
incremental_backup
check_backup_status_and_telegram
# 主从同步状态正常,退出循环
break
else
# 主从状态不都为 "Yes",发送告警
message_slave="$zuhu_name 主从同步当前状态出现异常!"
echo "$message_slave ,停止備份腳本"
rm -rf "$file_path"
exit 1
fi
done
}
#删除昨天的所有日期的备份目录
Delete_previous_backup_files
check_mysql_slave_status
#执行完移除腳本
rm -rf "$file_path"