阙忆然
2025-11-13 10:05:02
此脚本适用于 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 文件备份到指定的备份目录。
- 删除旧备份:
使用方法:
- 将上述脚本保存为 mybackup.sh。
- 给脚本添加执行权限:
注意事项:
- 确保用户输入的账号和密码具有足够的权限来执行备份操作。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|
|
|
|
|
相关推荐
|
|
|