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

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
http://www.xdnf.cn/news/3337.html

相关文章:

  • Kotlin-运算符重载函数
  • 生产级RAG系统一些经验总结
  • HTN77A0原理图提供聚能芯半导体禾润一级代理技术支持免费送样
  • 1295.统计位数为偶数的数字
  • SWIG 和 JNA / JNI 等 C 接口封装工具及进行 C 接口的封装
  • AnimateCC基础教学:二次贝塞尔曲线的绘制。
  • Android 动态权限申请
  • 多通道经颅电刺激器的主流厂家介绍
  • hadoop集群建立
  • 【keil使用】无法打开keil工程,只有空白界面的解决方法
  • rk3568安全启动功能实践
  • 介绍一下Files类的常用方法
  • 车辆检测新突破:VFM-Det 如何用大模型提升识别精度
  • LVGL -按键介绍 上
  • Nginx 重写与重定向配置
  • SpringBoot集成Druid启动报错testWhileIdle is true, validationQuery not set
  • 【功能】根据时区获取开服天数
  • 4:机器人目标识别无序抓取程序二次开发
  • 深度学习正则化:原理、方法与应用深度解析
  • 【Linux服务器安装杀毒软件】
  • 利用v0与Cursor优化开发流程和效率
  • Unity 粒子同步,FishNet
  • 高等数学-第七版-下册 选做记录 习题9-6
  • 2025年4月AI科技领域周报(4.21-4.27):大模型生态加速演进 通用AI开启产业融合新范式
  • Java批量数据处理唯一ID生成优化
  • 如何用AI生成假期旅行照?
  • CUDA编程 - 如何使用 CUDA 流在 GPU 设备上并发执行多个内核 - 如何应用到自己的项目中 - concurrentKernels
  • 希尔伯特第十问题:是一个伪命题
  • 【android bluetooth 案例分析 03】【PTS 测试 】【PBAP/PCE/SSM/BV-10-C】
  • 用.net动态创建类的实例指南方案