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

网站建设发布wordpress主题带会员中心

网站建设发布,wordpress主题带会员中心,dhru商城网站建设,建设品牌公司网站mysql全量备份、全量恢复demo案例:通过cron每分钟备份一次,具体生产按需调整,我用的目录是/opt 、按需调整mysql_backup.sh #!/bin/bash# MySQL全量备份脚本(每分钟执行) BACKUP_DIR"/opt/mysql_backups" …

mysql全量备份、全量恢复demo

案例:通过cron每分钟备份一次,具体生产按需调整,我用的目录是/opt 、按需调整

mysql_backup.sh

#!/bin/bash# MySQL全量备份脚本(每分钟执行)
BACKUP_DIR="/opt/mysql_backups"
MYSQL_USER="root"
MYSQL_PASSWORD="cnmsb123"
BACKUP_FILE="$BACKUP_DIR/full_backup_$(date +\%Y\%m\%d_\%H\%M\%S).sql"
LOG_FILE="$BACKUP_DIR/backup.log"# 创建备份目录
mkdir -p "$BACKUP_DIR"# 记录日志
echo "[$(date +'\%Y-\%m-\%d \%H:\%M:\%S')] 开始MySQL全量备份..." >> "$LOG_FILE"# 执行备份(备份所有数据库)
mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" \--all-databases \--single-transaction \--routines \--triggers \--events \> "$BACKUP_FILE" 2>> "$LOG_FILE"# 检查是否成功
if [ $? -eq 0 ]; then# 压缩备份文件gzip "$BACKUP_FILE"echo "[$(date +'\%Y-\%m-\%d \%H:\%M:\%S')] 备份成功: ${BACKUP_FILE}.gz" >> "$LOG_FILE"# 删除1小时前的备份(因为每分钟备份,磁盘会很快占满)find "$BACKUP_DIR" -name "full_backup_*.sql.gz" -mmin +60 -exec rm {} \;echo "[$(date +'\%Y-\%m-\%d \%H:\%M:\%S')] 已清理60分钟前的备份文件" >> "$LOG_FILE"
elseecho "[$(date +'\%Y-\%m-\%d \%H:\%M:\%S')] 备份失败,请检查错误日志" >> "$LOG_FILE"rm -f "$BACKUP_FILE"  # 删除不完整的备份
fi

mysql_restore.sh

#!/bin/bash# MySQL全量恢复脚本
BACKUP_DIR="/opt/mysql_backups"
MYSQL_USER="root"
MYSQL_PASSWORD="cnmsb123"
LOG_FILE="$BACKUP_DIR/restore.log"# 检查备份目录是否存在
if [ ! -d "$BACKUP_DIR" ]; thenecho "[$(date +'%Y-%m-%d %H:%M:%S')] 错误:备份目录 $BACKUP_DIR 不存在!" | tee -a "$LOG_FILE"exit 1
fi# 获取最新的备份文件
LATEST_BACKUP=$(ls -t "$BACKUP_DIR"/full_backup_*.sql.gz 2>/dev/null | head -n 1)if [ -z "$LATEST_BACKUP" ]; thenecho "[$(date +'%Y-%m-%d %H:%M:%S')] 错误:未找到可用的备份文件!" | tee -a "$LOG_FILE"exit 1
fi# 记录恢复开始时间
echo "[$(date +'%Y-%m-%d %H:%M:%S')] 开始恢复MySQL数据库,使用备份文件: $LATEST_BACKUP..." | tee -a "$LOG_FILE"# 解压并恢复备份
gunzip -c "$LATEST_BACKUP" | mysql -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" 2>> "$LOG_FILE"# 检查恢复结果
if [ $? -eq 0 ]; thenecho "[$(date +'%Y-%m-%d %H:%M:%S')] 恢复成功!" | tee -a "$LOG_FILE"# 恢复后刷新权限(重要!)mysql -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "FLUSH PRIVILEGES;" 2>> "$LOG_FILE"
elseecho "[$(date +'%Y-%m-%d %H:%M:%S')] 恢复失败,请检查错误日志!" | tee -a "$LOG_FILE"
fi

测试案例

建测试库、表
-- 创建测试数据库
CREATE DATABASE IF NOT EXISTS test_backup_db;
USE test_backup_db;-- 创建测试表
CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL,email VARCHAR(100) NOT NULL,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);CREATE TABLE IF NOT EXISTS orders (id INT AUTO_INCREMENT PRIMARY KEY,user_id INT,product_name VARCHAR(100) NOT NULL,amount DECIMAL(10, 2) NOT NULL,order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,FOREIGN KEY (user_id) REFERENCES users(id)
);-- 插入模拟数据
INSERT INTO users (username, email) VALUES('alice', 'alice@example.com'),('bob', 'bob@example.com'),('charlie', 'charlie@example.com');INSERT INTO orders (user_id, product_name, amount) VALUES(1, 'Laptop', 999.99),(1, 'Mouse', 19.99),(2, 'Keyboard', 49.99),(3, 'Monitor', 199.99);-- 验证数据
SELECT * FROM users;
SELECT * FROM orders;
删库跑路
mysql -uroot -pcnmsb123 -e "DROP DATABASE test_backup_db;"
恢复
./mysql_restore.sh
http://www.dtcms.com/a/478523.html

相关文章:

  • 单元测试 vs Main方法调试:何时使用哪种方式?
  • 03--CSS基础(2)
  • Wireshark笔记-从抓包的角度分析几种客户端不能正常获取IP地址的场景
  • 企业 网站 推广wordpress文章状态
  • typescript中infer常见用法
  • 科技赋能塞上农业:宁夏从黄土地到绿硅谷的蝶变
  • 第13讲:深入理解指针(3)——数组与指针的“深度绑定”
  • 基于MATLAB的匈牙利算法实现任务分配
  • Type-C 接口充电兼容设计(针对 5V1A 需求)
  • Anaconda 学习手册记录
  • Python-适用于硬件测试的小工具
  • 第三方软件测评机构:【Locust的性能测试和负载测试】
  • 【Python】列表 元组 字典 文件
  • 简单asp网站深圳做个商城网站设计
  • OpenTelemetry 入门
  • 昆山做网站找哪家好wordpress 算数验证码
  • 网站建设服务费入阿里云域名注册平台
  • 美颜的灵魂:磨皮技术的演进与实现原理详解
  • 自定义半精度浮点数modelsim仿真显示
  • 广东GEO优化哪家专业哪家服务好
  • 【C#】await Task.Delay(100)与Thread.Sleep(100)?
  • 从智能补全到云原生适配:免费IDE DataGrip的技术实践与行业趋势
  • 多摄像头网络压力测试
  • 信息发布网站设计巴中网站建设有限公司
  • 图像处理-opencv(一)
  • 空包网站分站怎么做重庆市工程建筑造价信息网
  • 基于MATLAB的Excel文件批量读取与循环处理
  • 网站建设方案拓扑图平面设计现在怎么样
  • 高并发下的优雅延迟:Python异步爬虫(aiohttp)的速率限制实践
  • Python爬虫实战:获取同花顺股票资金流向数据并做分析