news 2026/7/3 17:55:06

mysql定期全量备份脚本

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
mysql定期全量备份脚本

在工作过程中,因为问题排查的需要,可能需要将数据进行备份,

创建全量备份脚本/data/scripts/full_backup.sh,内容如下

#!/bin/bash # MySQL 全量备份脚本(使用 Xtrabackup 或 mysqldump) BACKUP_DIR="/data/backup/mysql/full" DATE=$(date +%Y%m%d_%H%M%S) BACKUP_PATH="$BACKUP_DIR/$DATE" LOG_FILE="/data/logs/binlog_backup/full_backup.log" log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE" } # 方法1:使用 mysqldump(适用于数据量较小的情况) log "开始 mysqldump 全量备份..." mysqldump \ -h192.168.56.80 \ -uroot \ -pYourRootPassword \ --all-databases \ --events \ --routines \ --triggers \ --master-data=2 \ --single-transaction \ --flush-logs \ > "$BACKUP_PATH.sql" if [ $? -eq 0 ]; then log "全量备份完成: $BACKUP_PATH.sql" # 记录 binlog 位置 head -50 "$BACKUP_PATH.sql" | grep "CHANGE MASTER TO" > "$BACKUP_PATH.pos" # 压缩备份 gzip "$BACKUP_PATH.sql" log "备份已压缩" else log "备份失败" exit 1 fi # 删除7天前的旧备份 find "$BACKUP_DIR" -type f -name "*.sql.gz" -mtime +7 -delete find "$BACKUP_DIR" -type f -name "*.pos" -mtime +7 -delete log "清理7天前的旧备份完成"

将备份脚本添加到 crontab

# 每天凌晨2点执行全量备份 0 2 * * * /data/scripts/full_backup.sh > /dev/null 2>&1

当主库发生灾难性故障需要恢复时,按以下步骤操作:

# 1. 找到最近的备份 cd /data/backup/mysql/full LATEST_BACKUP=$(ls -1t *.sql.gz | head -1) LATEST_DATE=$(echo $LATEST_BACKUP | cut -d. -f1) # 2. 查看备份时的 binlog 位置 cat "$LATEST_DATE.pos" # 3. 解压并恢复全量备份 gunzip -c "$LATEST_BACKUP" | mysql -hNewMaster -uroot -p # 4. 找到恢复点之后的 binlog cd /data/backup/mysql/binlog # 假设备份时位置是 'mysql-bin.000123', 45678 # 5. 从备份点之后开始应用 binlog mysqlbinlog \ --start-position=45678 \ mysql-bin.000123 mysql-bin.000124 mysql-bin.000125 \ | mysql -hNewMaster -uroot -p
备份文件清理策略
创建清理脚本 /data/scripts/cleanup_binlog.sh:
#!/bin/bash # 清理过期的 binlog 备份 BINLOG_DIR="/data/backup/mysql/binlog" RETENTION_DAYS=30 # 删除30天前的 binlog 文件 find "$BINLOG_DIR" -name "mysql-bin.*" -type f -mtime +$RETENTION_DAYS -delete # 记录清理日志 echo "[$(date)] 清理 $RETENTION_DAYS 天前的 binlog 文件" >> /data/logs/binlog_backup/cleanup.log
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/3 17:54:24

Python+Django构建轻量级企业员工管理系统实战

1. 项目概述与核心价值这个企业员工管理系统是我去年为一家中型制造企业开发的内部管理工具,主要解决HR部门手工管理员工信息的低效问题。系统采用PythonDjango全栈开发,包含员工档案管理、考勤统计、薪资核算等核心模块,上线后使人事部门的工…

作者头像 李华
网站建设 2026/7/3 17:53:42

API安全实战:从400错误到纵深防御体系构建

1. 项目概述:从“API错误400”到千万级数据泄露的警示最近在调试一个项目时,后台日志里频繁出现“API error: 400 param incorrect”和“API error: 400 this organization has been disabled.”这类错误。起初,我和很多开发者一样&#xff0…

作者头像 李华
网站建设 2026/7/3 17:52:03

nRF52840如何在arduino中生成uf2文件

第 1步:点击 Arduino 顶部菜单 项目 → 导出已编译的二进制文件 (英文:Sketch → Export Compiled Binary) 第 2 步:打开文件夹 点击 项目 → 显示项目文件夹 (英文:Sketch → Show Sketch Fo…

作者头像 李华
网站建设 2026/7/3 17:51:10

从图状态到API服务:LangGraph进阶与FastAPI+PostgreSQL工程地基

📅 2026年7月1日 LangGraph状态管理 FastAPI全栈 PostgreSQL高级特性 0. 今日学习地图 昨天我们完成了项目全景认知和Python异步编程基础,今天正式进入工程地基的构建。内容从LangGraph的高级状态管理、记忆机制,到FastAPI API层开发,再到PostgreSQL数据库的高级特性,…

作者头像 李华
网站建设 2026/7/3 17:48:02

告别手动刷课:智慧职教学习伴侣的30分钟高效学习法

告别手动刷课:智慧职教学习伴侣的30分钟高效学习法 【免费下载链接】auto-play-course 简单好用的刷课脚本[支持平台:职教云,智慧职教,资源库] 项目地址: https://gitcode.com/gh_mirrors/hc/auto-play-course 还在为职业教育平台的重复学习任务消耗宝贵时间…

作者头像 李华
网站建设 2026/7/3 17:45:29

ClaudeCode 安装 superPower 程序员工作方法论 Skill 集合

ClaudeCode 安装 superPower 程序员工作方法论 Skill 集合 一、superPower 是什么 superPower 是一套大佬总结程序员工作方法论 Skill 集合。安装了 superPower 以后,可以提高 ClaudeCode 的软件开发能力。 二、如何安装 superPower 2.1、在项目完成初始化 CLAUDE.m…

作者头像 李华