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

Linux备份数据

一、备份数据库

1、准备一份备份命令sh文件,比如将其存放在/opt/db_bak中,命名为bak_mysql.sh

#!/bin/bash
# MySQL备份配置
MYSQL_USER="root"
MYSQL_PASSWORD="root"
MYSQL_HOST="10.10.10.10"
MYSQL_PORT="3306"
BACKUP_DIR="/data/60_bak/sql"
LOG_FILE="/data/60_bak/backup.log"
DATE_SUFFIX=$(date +%Y%m%d_%H%M%S)
RETENTION_DAYS=7 # 文件保留天数# 要备份的数据库列表(用空格分隔)
DATABASES=("abc" "aaa" "bbb" "ccc")# 确保备份目录存在
mkdir -p $BACKUP_DIR# 记录开始时间
echo "$(date +%Y-%m-%d\ %H:%M:%S) - 开始备份MySQL数据库" >> $LOG_FILE# 检查磁盘空间(至少需要1GB空闲空间)
MIN_DISK_SPACE=1000000  # 1GB in KB
AVAILABLE_SPACE=$(df $BACKUP_DIR | awk 'NR==2 {print $4}')
if [ $AVAILABLE_SPACE -lt $MIN_DISK_SPACE ]; thenecho "$(date +%Y-%m-%d\ %H:%M:%S) - 错误:磁盘空间不足,至少需要1GB空闲空间" >> $LOG_FILEexit 1
fi# 备份状态标志
BACKUP_SUCCESS=true# 循环备份每个数据库
for DB_NAME in "${DATABASES[@]}"
doecho "$(date +%Y-%m-%d\ %H:%M:%S) - 开始备份数据库: $DB_NAME" >> $LOG_FILE# 执行MySQL备份/opt/mysql-8.0.26/bin/mysqldump -h$MYSQL_HOST -P$MYSQL_PORT -u$MYSQL_USER -p$MYSQL_PASSWORD \--single-transaction \--routines \--triggers \--events \$DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_${DATE_SUFFIX}.sql.gz 2>> $LOG_FILE# 检查备份是否成功if [ $? -eq 0 ]; then# 获取备份文件大小BACKUP_SIZE=$(du -h $BACKUP_DIR/${DB_NAME}_${DATE_SUFFIX}.sql.gz | cut -f1)echo "$(date +%Y-%m-%d\ %H:%M:%S) - 数据库 $DB_NAME 备份成功完成: ${DB_NAME}_${DATE_SUFFIX}.sql.gz (大小: $BACKUP_SIZE)" >> $LOG_FILEelseecho "$(date +%Y-%m-%d\ %H:%M:%S) - 数据库 $DB_NAME 备份失败" >> $LOG_FILEBACKUP_SUCCESS=falsefi
done# 根据备份状态执行清理操作
if [ "$BACKUP_SUCCESS" = true ]; then# 清理旧备份find $BACKUP_DIR -name "*.sql.gz" -mtime +$RETENTION_DAYS -exec rm -f {} \; 2>> $LOG_FILEecho "$(date +%Y-%m-%d\ %H:%M:%S) - 清理$RETENTION_DAYS天前的旧备份完成" >> $LOG_FILE
elseecho "$(date +%Y-%m-%d\ %H:%M:%S) - 部分数据库备份失败,跳过清理操作" >> $LOG_FILEexit 1
fi

2、给予bak_mysql执行权限

sudo chmod +x /opt/db_bak/bak_mysql.sh

 3、手动执行一遍确保没问题

cd /opt/db_bak
./bak_mysql.sh

4、编辑cron任务(cron在linux用于设置周期性执行任务的工具)

crontab -e
# 输入以下文本,如果你希望每天凌晨2点执行备份
0 2 * * * /opt/db_bak/db_mysql.sh
# 退出编辑,验证一下任务列表
crontab -l

 

http://www.wxhsa.cn/company.asp?id=5759

相关文章:

  • np.argmax
  • TQ322数字PIR使用笔记
  • 使用Apache做web服务器时无法断点续传的怎么办?
  • Rust使用rbatis
  • 2025ICPC网络赛第一场(A,B,C,D,G,I,M)
  • Google Maps
  • 【TES600G】基于JFM7K325T FPGA+FT-M6678 DSP的全国产化信号处理平台
  • KMS激活Windows系统(win10)
  • 基于python3的http文件服务器
  • 大阪府
  • sql server2008大批量插入数据
  • 【Office 2010】经典办公套件Office 2010——保姆级详细图文下载安装教程 - 详解
  • Eth-Trunk实验
  • HCIP—Eth-Trunk
  • 一个还不错的,简单的,前端vue2后台框架
  • P4099 [HEOI2013] SAO
  • Linux chronyd 时间同步服务器,命令
  • 2025暑假集训总结lh
  • ET框架的 阻止 ddos 设计,软路由
  • Serena 最佳实践方案
  • C++ 零散记录:条件编译与 if constexpr 的区别
  • ubuntu 22.04安装mysql8.0.41(glibc2.17)
  • cURL调试功能磁盘空间耗尽导致拒绝服务漏洞分析
  • mysql常用函数,数据处理效率提升实战指南
  • Tita 一体化管理:赋能互联网企业产品迭代全流程
  • 【2025-09-15】动起来了
  • 二叉树的层次遍历
  • Mysql索引失效场景
  • 农田水利综合信息管理平台
  • 写了一个BBP算法的实现库,欢迎讨论