news 2026/8/7 23:37:20

分享一个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进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/7 21:25:40

Ascend C 绿色计算与边缘部署:面向低碳 AI 的极致能效优化实践

引言&#xff1a;性能之外&#xff0c;能效成为新指标在全球碳中和背景下&#xff0c;AI 的能耗问题 日益受到关注。据测算&#xff0c;训练一个大模型的碳排放相当于 5 辆汽车 lifetime 排放。而在推理侧&#xff0c;边缘设备&#xff08;如摄像头、车载终端&#xff09;的功耗…

作者头像 李华
网站建设 2026/8/7 21:26:02

量子计算终极指南:如何用Qiskit快速掌握量子编程的完整教程

量子计算终极指南&#xff1a;如何用Qiskit快速掌握量子编程的完整教程 【免费下载链接】qiskit-metapackage Qiskit is an open-source SDK for working with quantum computers at the level of circuits, algorithms, and application modules. 项目地址: https://gitcode…

作者头像 李华
网站建设 2026/8/7 22:07:11

22、LTSP 环境搭建与 Ubuntu 服务器安全指南

LTSP 环境搭建与 Ubuntu 服务器安全指南 1. LTSP 环境安装与配置 1.1 系统安装流程 在安装过程中,首先输入所需的用户名,接着两次输入密码,之后基础系统将完成安装。在经历了几个步骤后,会出现关于屏幕分辨率的问题。对于正在安装的系统类型,过高的屏幕分辨率可能会导致…

作者头像 李华