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

Linux 环境下 Mysql 5.7 数据定期备份

目录

    • 一、创建数据备份脚本
    • 二、查看备份日志
    • 三、数据库数据恢复

备份策略:
系统环境 openEuler 22.03 (LTS-SP4)
单机备份
每天凌晨2点,指定数据库表全量备份,只保留近7次备份数据
每次的脚本执行,将会记录执行结果到日志,方便后续查看

一、创建数据备份脚本

1.1 创建脚本文件

# 路径根据实际情况修改
[root@openeuler ~]# sudo vi /mnt/mysql/backup_script.sh

1.2 写入脚本内容

#!/bin/bash# MySQL配置
MYSQL_USER="root"
MYSQL_PWD="root"
MYSQL_HOST="localhost"
MYSQL_PORT="3366"
MYSQLDUMP_BIN="/usr/local/mysql/bin/mysqldump"# 备份配置
BACKUP_DIR="/mnt/mysql/backup_data"
BACKUP_LOG_FILE="$BACKUP_DIR/backup.log"
DATABASES=("rmcbs" "gdzj")
MAX_BACKUPS=7# 创建备份目录(如果不存在)
if [ ! -d "$BACKUP_DIR" ]; thenmkdir -p "$BACKUP_DIR"
fi# 记录日志函数
log() {local timestamp=$(date +"%Y%m%d %H:%M:%S")echo "$timestamp $1 $2" >> "$BACKUP_LOG_FILE"
}log "INFO" ""
log "INFO" "================== start 备份 =================="# 备份每个数据库
for db in "${DATABASES[@]}"; dobackup_file="$BACKUP_DIR/${db}_backup_$(date +"%Y%m%d_%H%M%S").sql"if $MYSQLDUMP_BIN -h "$MYSQL_HOST" -P "$MYSQL_PORT" -u "$MYSQL_USER" -p"$MYSQL_PWD" "$db" > "$backup_file"; thenlog "SUCCESS" "成功备份数据库 $db$backup_file"# 压缩备份文件if gzip "$backup_file"; thenlog "SUCCESS" "成功压缩数据库 $db 的备份文件"elselog "FAILURE" "压缩数据库 $db 的备份文件失败"fielselog "FAILURE" "备份数据库 $db 失败"fi# 清理旧备份backup_count=$(ls -1 "$BACKUP_DIR/${db}_backup_"*.sql.gz 2>/dev/null | wc -l)if [ $backup_count -gt $MAX_BACKUPS ]; thenfiles_to_delete=$((backup_count - MAX_BACKUPS))ls -1t "$BACKUP_DIR/${db}_backup_"*.sql.gz | tail -n $files_to_delete | xargs rm -flog "SUCCESS" "删除 $db$files_to_delete 个旧备份文件"fi
done log "INFO" "================== end 备份 =================="
log "INFO" ""

1.3 添加执行权限

[root@openeuler ~]# chmod +x /mnt/mysql/backup_script.sh

1.4 配置定时任务

# 编辑 crontab
[root@openeuler ~]# crontab -e# 按【i】键进行编辑,设置环境变量,【ESC】退出编辑,【:wq】保存内容
# 写入下列内容:每天凌晨2点执行备份脚本
0 2 * * * /mnt/mysql/backup_script.sh# 验证 crontab
[root@openeuler ~]# crontab -l

二、查看备份日志

[root@openeuler ~]# tail -1000f /mnt/mysql/backup_data/backup.log

三、数据库数据恢复

注意:
此处命令是上一版本的数据库全量恢复,在生产环境中一定要注意,最好是手动执行按表恢复,防止数据丢失!!!以防万一!!!

# 若数据库不存在则创建
[root@openeuler ~]# mysql -h localhost -P 3366 -u root -proot -e "CREATE DATABASE IF NOT EXISTS [数据库名];" 2>/dev/null# 恢复数据库,先解压备份文件再导入
[root@openeuler ~]# zcat /mnt/mysql/backup_data/[备份名称].sql.gz | mysql -h localhost -P 3366 -u root -proot [数据库名] 2>/dev/null

相关文章:

  • PCA主成分分析法(最大投影方差,最小重构距离,SVD角度)
  • 生物化学笔记:神经生物学概论06 听觉系统 结构与功能 声强范围的检测(外毛细胞动态调节)
  • 第二章 日志分析-apache日志分析(玄机系列)
  • STM32移植U8G2
  • WPF使用SQLSugar和Nlog
  • QT —— 信号和槽(带参数的信号和槽函数)
  • C++漫溯键值的长河:map set
  • IPD研学:76页页基于IPD思想-华为需求管理培训方案【附全文阅读】
  • 【2025五一数学建模竞赛C题】社交媒体平台用户分析问题|建模过程+完整代码论文全解全析
  • [更新完毕]2025东三省A题深圳杯A题数学建模挑战赛数模思路代码文章教学:热弹性物理参数估计
  • 计算机视觉——基于树莓派的YOLO11模型优化与实时目标检测、跟踪及计数的实践
  • 前端面试宝典---webpack原理解析,并有简化版源码
  • 突破传统!TTRL如何开启大模型无监督强化学习新篇章?
  • 使用Python和Pandas实现的Snowflake权限检查与SQL生成用于IT审计
  • windows电脑端SSH连接开termux的安卓端
  • 【经管数据】上市公司企业资本要素和劳动要素投入数据(2000-2022年)
  • Java大厂硬核面试:Flink流处理容错、Pomelo JVM调优、MyBatis二级缓存穿透防护与Kubernetes服务网格实战解析
  • 博主勇闯自媒体
  • 图像加密算法概述
  • python2反编译部分
  • 上海与世界|黄菊与上海建设中国式全球城市
  • 魔都眼|静安光影派对五一启幕:苏河湾看徐悲鸿艺术画作
  • 许峰已任江苏省南京市副市长
  • 船只深夜撞上海上风机后沉没1死1失踪,调查报告公布
  • 美加征“对等关税”后,调研显示近半外贸企业将减少对美业务
  • 美媒:受关税政策影响,美国电商平台近千种商品平均涨价29%