全面备份:自动化MySQL服务器上所有数据库的备份策略

这篇博客提供了一个批量备份MySQL数据库的Shell脚本,并包含了详细的注释和使用说明。这个脚本能够自动化地备份服务器上所有的数据库,排除系统数据库,并在备份完成后压缩和清理旧文件。

脚本内容及注释

下面是脚本的内容,其中包括了详细的注释说明:

#!/bin/sh

# 定义数据库用户和密码
DBUser='root'
DBPass='your_password'

# 定义MySQL和Mysqldump的路径
Mysql_path='/usr/local/mysql/bin/mysql'
Mysqldump_path='/usr/local/mysql/bin/mysqldump'

# 定义备份日期和当前工作目录
Back_date=$(date +%Y%m%d)
Curr_dir=$(cd $(dirname $0);pwd)

# 定义备份存放的目录
Backup_dir='/opt/dbbak'

# 检查备份目录是否存在,不存在则创建
if [ ! -d ${Backup_dir} ]; then
    mkdir -p ${Backup_dir}
fi

# 创建当天的备份目录
mkdir ${Backup_dir}/mysql_backup_${Back_date}

# 获取数据库列表,排除系统数据库
DBS=$(${Mysql_path} -u${DBUser} -p${DBPass} -e "show databases;" | egrep -vw "Database|performance_schema|information_schema" 2>/dev/null)
if [ $? -ne 0 ]; then
    echo "login failed,exit"
    exit 1
fi

# 遍历数据库列表,执行备份操作
for i in ${DBS}; do
    echo -e "\033[32m Backup $i \033[0m"
    ${Mysqldump_path} -u${DBUser} -p${DBPass} --single-transaction --hex-blob -B ${i} | gzip > ${Backup_dir}/mysql_backup_${Back_date}/${i}_${Back_date}.sql.gz
done

# 切换到备份目录,打包并删除原备份文件夹
cd ${Backup_dir}
tar zcvf mysql_backup_${Back_date}.tar.gz mysql_backup_${Back_date} --remove-files

# 删除3天前的备份文件
cd ${Backup_dir} && find ${Backup_dir} -type f -name "*.tar.gz" -mtime +3 -exec rm -f {} \;

脚本解释

  1. 脚本头#!/bin/sh 指明这个脚本应该使用shell来执行。
  2. 数据库访问信息DBUserDBPass 变量存储用于访问数据库的凭据。
  3. 工具路径Mysql_pathMysqldump_path 指向mysql和mysqldump工具的路径。
  4. 备份时间和目录:使用日期生成备份文件名,并定义备份文件存放的目录。
  5. 创建备份目录:检查并创建今天的备份目录。
  6. 获取数据库列表:列出除系统数据库外的所有数据库。
  7. 备份过程:对每个数据库执行备份,备份文件以.sql.gz格式保存。
  8. 压缩备份文件:将所有备份文件打包成一个.tar.gz文件,并删除原备份目录。
  9. 清理旧备份:删除3天前的备份文件。

使用方法

1. 将上述脚本保存到一个文件中,例如命名为mysql_backup.sh

2. 给脚本文件赋予执行权限:

chmod +x mysql_backup.sh

3. 执行脚本进行备份:

./mysql_backup.sh

4. (可选)将脚本加入到crontab中,实现定期自动备份。

如果希望脚本定时执行,可以将其添加到crontab中。编辑当前用户的crontab文件:

crontab -e

添加一行定时任务,例如每天凌晨2点执行备份:

0 2 * * * /path/to/mysql_backup.sh

确保将/path/to/mysql_backup.sh替换为脚本实际的存储路径。

保存并退出编辑器。这样,脚本将按照设定的时间自动运行并执行数据库备份。

结论

通过使用这个脚本,系统管理员可以轻松地自动化MySQL数据库的备份过程。这不仅提高了备份任务的效率,也确保了数据的安全性和及时恢复的可能性。通过定期执行备份并清理旧文件,可以有效管理备份数据的存储空间。

相关推荐

  1. mysql备份和还原全部数据库

    2024-04-08 07:42:04       19 阅读
  2. mysql备份策略

    2024-04-08 07:42:04       20 阅读
  3. 备份服务器数据重要

    2024-04-08 07:42:04       28 阅读
  4. 备份服务器数据重要

    2024-04-08 07:42:04       32 阅读
  5. 数据备份策略

    2024-04-08 07:42:04       43 阅读

最近更新

  1. redis中的事务和mysql中的事务有什么区别?

    2024-04-08 07:42:04       0 阅读
  2. C# 构造函数依赖注入 使用out向外传递参数

    2024-04-08 07:42:04       0 阅读
  3. 信息时代,呼唤新的哲学

    2024-04-08 07:42:04       0 阅读
  4. 【数据基础】— B树

    2024-04-08 07:42:04       0 阅读
  5. Vue 路由传参 query方法 bug 记录

    2024-04-08 07:42:04       0 阅读
  6. 翻页 上一页/下一页

    2024-04-08 07:42:04       0 阅读
  7. 前端导出pdf

    2024-04-08 07:42:04       1 阅读
  8. Knife4j的原理及应用详解(五)

    2024-04-08 07:42:04       1 阅读
  9. Day2--每日一练

    2024-04-08 07:42:04       1 阅读

热门阅读

  1. 元类创建类的流程详解

    2024-04-08 07:42:04       15 阅读
  2. 【测试开发学习历程】python函数

    2024-04-08 07:42:04       15 阅读
  3. C语言学习分享

    2024-04-08 07:42:04       12 阅读
  4. 什么是物联网?

    2024-04-08 07:42:04       14 阅读
  5. 小程序View点击响应传递多个参数

    2024-04-08 07:42:04       12 阅读
  6. 微信小程序脚本的执行顺序

    2024-04-08 07:42:04       13 阅读
  7. KADB锁冲突查看及解决

    2024-04-08 07:42:04       12 阅读