news 2026/1/23 20:54:58

分享一个MySQL万能备份脚本

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
分享一个MySQL万能备份脚本

此脚本适用于 MySQL 各个生命周期的版本

#!/bin/bash

# mybackup.sh

# 备份保留天数,建议保留三天

days=7

# 备份时间

time=$(date +%Y%m%d%H%M%S)

# 备份保存路径

backup_dir=/opt/backup

# 备份工具

tool=mysqldump

# 端口

port="3306"

# 是否采用 --all-databases 备份所有数据库,是填写 Y,否填其他

read -p "是否备份所有数据库?(Y/N): " bak_all

# 将要备份的数据库,填写将要备份的数据库名

if [ "$bak_all" != "Y" ]; then

read -p "请输入要备份的数据库名,多个数据库用空格分隔: " database_input

IFS=' ' read -r -a database_arr <<< "$database_input"

fi

# 输入账号和密码

read -p "请输入 MySQL 用户名: " username

read -s -p "请输入 MySQL 密码: " password

echo

# 检查文件夹是否存在,不存在则创建

if [ ! -d "$backup_dir/mysqlbak_$time" ]; then

mkdir -p "$backup_dir/mysqlbak_$time"

fi

# 备份数据库

if [ "$bak_all" == "Y" ]; then

$tool -u"$username" -p"$password" -P"$port" --master-data=2 --single-transaction --set-gtid-purged=on --all-databases | gzip > "$backup_dir/mysqlbak_$time/mysqlbak_all_$time.sql.gz"

else

for database in "${database_arr[@]}"; do

$tool -u"$username" -p"$password" -P"$port" --master-data=2 --single-transaction --set-gtid-purged=on "$database" | gzip > "$backup_dir/mysqlbak_$time/mysqlbak_${database}_${time}.sql.gz"

done

fi

# 备份 binlog 日志

# 获取当前的 binlog 文件列表

binlog_files=$(mysql -u"$username" -p"$password" -P"$port" -e "SHOW BINARY LOGS;" | awk 'NR>1 {print $1}')

for binlog_file in $binlog_files; do

mysqlbinlog -u"$username" -p"$password" -P"$port" "$binlog_file" > "$backup_dir/mysqlbak_$time/${binlog_file}_${time}.log"

done

# 删除指定天数前的备份

find "$backup_dir" -maxdepth 1 -type d -mtime +$days -name 'mysqlbak*' -exec rm -rf {} \;

脚本说明:

账号和密码输入:

使用 read 命令在脚本运行时提示用户输入 MySQL 用户名和密码,其中 -s 选项用于隐藏密码输入。

数据库选择:

询问用户是否备份所有数据库,如果选择否,则让用户输入要备份的数据库名,多个数据库名用空格分隔。

备份数据库:

根据用户的选择,使用 mysqldump 备份所有数据库或指定的数据库,并将备份文件压缩保存。

备份 binlog 日志:

使用 mysql -e 命令获取当前的 binlog 文件列表。

遍历 binlog 文件列表,使用 mysqlbinlog 命令将每个 binlog 文件备份到指定的备份目录。

删除旧备份:

使用 find 命令删除指定天数前的备份文件夹。

使用方法:

将上述脚本保存为 mybackup.sh。

给脚本添加执行权限:

chmod +x mybackup.sh

运行脚本:

./mybackup.sh

注意事项:

确保用户输入的账号和密码具有足够的权限来执行备份操作。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/16 12:52:53

分享几则中年夫妻关系的有益建议

著名演员何晴去世了&#xff0c;很震惊&#xff0c;她是我最喜欢的女演员&#xff0c;曾经出演过四大名著。分享几则中年夫妻关系的有益建议&#xff1a; 1、可以容忍对方的生活习惯。包括拉S放P、不叠被、不洗衣&#xff0c;但要管好自己&#xff0c;还是尽量别过份坦荡。 2、…

作者头像 李华
网站建设 2026/1/17 19:56:23

(108页PPT)园区大数据治理解决方案(附下载方式)

篇幅所限&#xff0c;本文只提供部分资料内容&#xff0c;完整资料请看下面链接 &#xff08;108页PPT&#xff09;园区大数据治理解决方案.pptx_智慧园区总体规划PPT资源-CSDN下载 资料解读&#xff1a;《园区大数据治理解决方案》 详细资料请看本解读文章的最后内容。 在数…

作者头像 李华
网站建设 2026/1/20 13:38:18

行为驱动开发(BDD)实践流程深度解析

1. BDD核心理念与测试价值重塑 行为驱动开发本质上是测试驱动开发(TDD)的演进延伸&#xff0c;其革命性在于将关注点从“代码功能验证”转向“业务行为实现”。对测试人员而言&#xff0c;这意味着&#xff1a; 需求澄清前移&#xff1a;测试人员在需求讨论阶段即参与行为场景…

作者头像 李华
网站建设 2026/1/2 10:58:27

如何快速构建企业级ICT资产管理系统:Chemex免费开源解决方案终极指南

如何快速构建企业级ICT资产管理系统&#xff1a;Chemex免费开源解决方案终极指南 【免费下载链接】chemex &#x1f525; 咖啡壶是一个免费、开源、高效且漂亮的资产管理平台。资产管理、归属/使用者追溯、盘点以及可靠的服务器状态管理面板。基于优雅的Laravel框架开发。 项…

作者头像 李华
网站建设 2026/1/11 17:28:48

1Panel面板OpenResty安装失败的完整解决方案

在使用1Panel面板进行OpenResty部署时&#xff0c;很多用户会遇到安装失败的问题&#xff0c;特别是在aarch64架构的Debian系统上。本文将从问题诊断、深度解析到实战修复&#xff0c;为您提供一套完整的解决方案。 【免费下载链接】1Panel 新一代的 Linux 服务器运维管理面板 …

作者头像 李华