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

发布于:2024-04-08 ⋅ 阅读:(156) ⋅ 点赞:(0)

这篇博客提供了一个批量备份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数据库的备份过程。这不仅提高了备份任务的效率,也确保了数据的安全性和及时恢复的可能性。通过定期执行备份并清理旧文件,可以有效管理备份数据的存储空间。


网站公告

今日签到

点亮在社区的每一天
去签到