MySQL数据库liunx 下的自动备份

本文介绍了一种使用bash脚本实现MySQL数据库备份的方法。通过设置要备份的数据库名称及保存路径,利用mysqldump工具完成数据库的热备份。此外,还介绍了如何压缩备份文件、清理旧备份以及移除不再需要的文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/bin/bash  
# 要备份的数据库名,多个数据库用空格分开
databases=(kuaijie|rap_db|sonar) 

# 备份文件要保存的目录
basepath='/home/kuaijie_MY_bak/'

if [ ! -d "$basepath" ]; then
  mkdir -p "$basepath"
fi
# 循环databases数组
for db in ${databases[*]}
  do
    # 备份数据库生成SQL文件
    /bin/nice -n 19 /usr/bin/mysqldump -uroot -pqkjr_420 --single-transaction --flush-logs--master-data=2 $db > $basepath$db-$(date +%Y%m%d).sql

--single-transaction: 基于此选项能实现热备InnoDB表;因此,不需要同时使用--lock-all-tables;

--flush-logs  在使用这样的语句进行备份之后,mysql就会关闭原来的二进制日志文件,开启一个新的二进制日志文件。比如,新开启、新增量的二进制日志文件为 mysql-bin.000002。 那么在进行数据恢复的时候,你可以利用$basepath$db-$(date +%Y%m%d).sql进行全量恢复+ mysql-bin.000002进行增量同步。

--master-data=2  记录备份那一时刻的二进制日志的位置,并且注释掉,1是不注释的

    # 将生成的SQL文件压缩
    /bin/nice -n 19 tar zPcf $basepath$db-$(date +%Y%m%d).sql.tar.gz $db-$(date +%Y%m%d).sql

    # 删除7天之前的备份数据
    #find $basepath -mtime +7 -name "*.sql.tar.gz" -exec rm -rf {} \;
    mv $basepath$db-$(date +%Y%m%d).sql.tar.gz /share/caedpay_bak/
  done

  # 删除生成的SQL文件
  rm -rf $basepath/*.sql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值