Linux环境下自动备份MySQL数据库的Shell脚本示例

七月
七月
发布时间:2026-10-14 | 2人浏览过
原创

在使用Linux服务器管理MySQL数据库时,定期备份是保障数据安全的关键环节。本文将展示一个基础的Bash Shell脚本,用于自动化指定表的备份与压缩操作。

结果与目标

本脚本的主要目标是在Linux系统中实现MySQL特定数据表的自动化备份。它会将指定的表导出为SQL格式,并使用 gzip 进行压缩,最终保存在按年、月、日分层的目录下。这种方式能够有效减少备份文件的体积,但需注意其适用场景。

第1步:准备环境配置

在执行备份前,需要明确MySQL的连接信息和目标路径。

  • 连接参数:脚本中硬编码了MySQL的密码和用户(root),实际部署建议优化权限或使用配置文件。
  • 备份路径:设定 /usr/backup/mysql/ 为基础目录,并根据当前日期自动生成子目录。

第2步:编写备份逻辑

脚本核心逻辑如下,需根据实际需求修改变量:

#!/bin/bash
# MySQL备份脚本
mysql_pwd="your_password_here"
mysql_dump="/usr/local/mysql/bin/mysqldump"
cur_year=$(date +"%Y")
cur_month=$(date +"%m")
cur_day=$(date +"%d")
# 定义备份文件存放路径
dump_path="/usr/backup/mysql/$cur_year-$cur_month/$cur_day"

# 定义需要备份的表列表
arr_tables=(
"table_1"
"table_2"
"table_3"
)

# 如果目录不存在则创建
if [ ! -d "$dump_path" ]; then
  mkdir -p "$dump_path"
fi

# 遍历表格并执行备份及压缩
for cur_table in ${arr_tables[*]}; do
  $mysql_dump -uroot -p$mysql_pwd --opt mydb $cur_table | gzip > $dump_path/$cur_table.sql.gz
done

注意事项与风险提示

该脚本存在明显的局限性,使用前请务必了解:

  1. 数据一致性风险:mysqldump 在默认模式下(无 --single-transaction)会对表加锁。对于大表或高并发写入场景,可能导致性能下降甚至短暂的服务不可用。此脚本仅适用于数据一致性要求不高或低峰期的环境。
  2. 安全性问题:密码明文存储在脚本中。建议将其移出脚本,或通过环境变量注入,或使用 .my.cnf 配置文件配合 mysqldump 的 --defaults-file 参数。
  3. 覆盖风险:脚本未包含旧文件的清理机制,长期运行可能会占用大量存储空间。建议结合 crontab 设置定时任务,并辅以日志记录和定期归档策略。

以上就是Linux环境下自动备份MySQL数据库的Shell脚本实现的详细内容,更多关于Linux运维和数据库管理的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表