当前位置: 首页 > news >正文

分享一个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" ]; thenread -p "请输入要备份的数据库名,多个数据库用空格分隔: " database_inputIFS=' ' read -r -a database_arr <<< "$database_input"
fi# 输入账号和密码
read -p "请输入 MySQL 用户名: " username
read -s -p "请输入 MySQL 密码: " password
echo# 检查文件夹是否存在,不存在则创建
if [ ! -d "$backup_dir/mysqlbak_$time" ]; thenmkdir -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"
elsefor 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; domysqlbinlog -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 {} \;

脚本说明:

1、账号和密码输入

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

2、数据库选择

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

3、备份数据库

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

4、备份 binlog 日志

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

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

5、删除旧备份

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

使用方法:

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

  2. 给脚本添加执行权限:

chmod +x mybackup.sh

3.运行脚本:

./mybackup.sh

注意事项:

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

文章转载自:刘子毅

原文链接:https://www.cnblogs.com/liuziyi1/p/19214982

体验地址:http://www.jnpfsoft.com/?from=001YH

http://www.dtcms.com/a/604925.html

相关文章:

  • 大模型数据洞察能力方法调研
  • 32位MCU芯片国产品牌(32系列单片机常用型号有哪些)
  • 网站底部留言代码赤峰建设淘宝网站
  • 方特网站是谁做的照片做视频的网站
  • Java 9 新特性详解
  • Spring boot 3.3.1 官方文档 中文
  • Sora 2——开启 AI 视频创作新时代
  • 异世界网络:BGP联邦的建立
  • PHP客户端调用由Go服务端GRPC接口
  • Java 开发 - 粘包处理器 - 基于消息头 + 消息体
  • dify零基础入门示例
  • 跨语言智能再升级!Multi-LMentry 打造多语理解新基准;Nemotron-Personas-USA重塑虚拟人画像生成
  • 门户网站建设项目书免费拒绝收费网站
  • 研发管理知识库(13)阿里云的DevOps工具介绍
  • WPF 使用UserControl / ContentControl显示子界面
  • Docker 的底层工作原理
  • 互联网门户网站是什么意思网站建设 源美设计
  • 重庆商业网站有哪些产品网站建设方案
  • C基础学习过程02
  • 视频矩阵哪个品牌好 十大视频矩阵品牌
  • 电子书《21天学通Java(第5版)》
  • maven 私服上传jar
  • 从自动驾驶到智能辅导:人工智能如何重塑商业与生活
  • Hadess入门到精通 - 如何管理通用Generic制品
  • 万物互联时代,如何选择合适的时序数据库?
  • 集团门户网站建设做国外网站要注意什么
  • 软件设计模式-适配器模式
  • 软件工程(速成笔记)
  • 深圳苏州企业网站建设服务公司网站建设很难吗
  • sward实战教程系列(4) - 如何编写Markdown文档