MySQL数据库备份

全量备份

复制代码
#!/bin/bash
# MySQL数据库完全备份脚本
# 设置登录变量
MY_USER="root"
MY_PASS="123123"
MY_HOST="localhost"
MY_CONN="-u$MY_USER -p$MY_PASS -h$MY_HOST"
# 设置备份的数据库(或表)
MY_DB="client"
# 定义备份路径、工具、时间、文件名
BF_DIR="/mysql_bak/wanbei"
BF_CMD="/usr/bin/mysqldump"
BF_TIME=$(date +%Y%m%d-%H%M)
NAME="$MY_DB-$BF_TIME"
# 备份为.sql脚本,然后打包压缩(打包后删除原文件)
[ -d $BF_DIR ] || mkdir -p $BF_DIR
cd $BF_DIR
$BF_CMD $MY_CONN --databases $MY_DB > $NAME.sql
/bin/tar zcf $NAME.tar.gz $NAME.sql --remove &>/dev/null
复制代码

增量备份

复制代码
#!/bin/bash
# MySQL数据库增量备份脚本
# 设置登录变量
MY_USER="root"
MY_PASS="123123"
MY_HOST="localhost"
MY_CONN="-u$MY_USER -p$MY_PASS -h$MY_HOST"
# 定义备份路径、工具、二进制日志前缀、二进制日志存放路径
BF_TIME="$(date +%Y%m%d)"
BF_DIR="/mysql_bak/zengbei/$BF_TIME"
CMD="/usr/bin/mysqladmin"
QZ="mysql-bin"
LOG_DIR="/var/lib/mysql"
# 拷贝二进制日志
[ -d $BF_DIR ] || mkdir -p $BF_DIR
$CMD $MY_CONN flush-logs
/bin/cp -p $(ls $LOG_DIR/$QZ.* |awk -v RS="" '{print $(NF-2)}') $BF_DIR
复制代码

xtrabackup全量备份

复制代码
#!/bin/bash  
  
# 定义备份目录、用户名、密码、日期和日志文件名  
backup_dir=/cmsdate/databackup1  
user=root  
pwd=1q2w3e4r#@!  
dt=$(date +%Y%m%d)  
log_file="${backup_dir}/backup_${dt}.log"  
  
cd $backup_dir/
# 执行xtrabackup备份  
xtrabackup --defaults-file=/cmsdate/mysql/my.cnf --user=$user --password=$pwd --backup --target-dir="${backup_dir}/backup_${dt}" --socket=/tmp/mysql.sock > "${log_file}" 2>&1  
  
# 检查xtrabackup的退出状态  
if [ $? -eq 0 ]; then  
    echo "$(date): Backup completed successfully." >> $log_file  
else  
    echo "$(date): Error occurred during backup process." >> $log_file
    exit 1  
fi  
  
# 定义打包后的文件名和目标目录  
tar_file="${backup_dir}/backup_${dt}.tar.gz"  
target_dir=/cmsdate/databackup2  
  
# 打包备份目录  
tar -czvf "${tar_file}" "${backup_dir}/backup_${dt}" >> "${log_file}" 2>&1  
  
# 检查打包是否成功  
if [ $? -eq 0 ]; then  
    echo "$(date): Backup has been successfully tarred." >> "${log_file}"  
  
    # 移动打包文件到目标目录  
    mv "${tar_file}" "${target_dir}/" >> "${log_file}" 2>&1  
  
    # 检查移动是否成功  
    if [ $? -eq 0 ]; then  
        echo "$(date): Backup has been moved to ${target_dir}." >> "${log_file}"  
    else  
        echo "$(date): Error occurred while moving backup." >> "${log_file}"  
    fi  
else  
    echo "$(date): Error occurred while tarring the backup." >> "${log_file}"  
fi  
  
# 删除超过7天的旧备份目录和文件  
find "${backup_dir}/" -type d -name "backup_*" -mtime +7 -exec rm -rf {} \;  
find "${backup_dir}/" -type f -name "backup_*" -mtime +7 -exec rm -rf {} \;  
复制代码

 

posted @   太阳的阳ฅ  阅读(4)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示