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

etcd备份脚本

K8S的数据信息存储到etcd键值对数据库中,当创建了非常多的应用的时候,k8s数据安全性变得尤为重要。这里我采取的是每日对etcd进行快照备份

#!/bin/bashsource /etc/profile
export ETCDCTL_API=3
export ETCDCTL_CACERT=/etc/kubernetes/pki/etcd/ca.crt
export ETCDCTL_CERT=/etc/kubernetes/pki/etcd/server.crt
export ETCDCTL_KEY=/etc/kubernetes/pki/etcd/server.key
export ETCDCTL_ENDPOINTS="https://192.168.12.210:2379"# 备份保存目录
BACKUP_DIR="/backup/k8s-etcd"# 日志文件目录
LOG_DIR="/backup/k8s-etcd/log"# 构建备份文件名
BACKUP_FILE="$BACKUP_DIR/$(hostname)-etcd_$(date +%Y%m%d-%H%M%S).db"# 最多保留几天的备份
DAYS_TO_KEEP=7# 生成日志文件名
LOG_FILE="$LOG_DIR/k8s-etcd-backup-$(date +%Y%m%d-%H%M%S).log"# 远端备份服务器地址
REMOTE_HOST="1.1.1.1"
REMOTE_DIR="/backup/lvwo-dev-k8s_etcd"
REMOTE_PATH="$REMOTE_HOST:$REMOTE_DIR"# 创建必要的目录(判断是否存在)
check_dirs() {if [ ! -d "$BACKUP_DIR" ]; thenmkdir -p "$BACKUP_DIR"fiif [ ! -d "$LOG_DIR" ]; thenmkdir -p "$LOG_DIR"fi
}# 记录日志函数
log() {local timestamp=$(date +"%Y-%m-%d %H:%M:%S")echo "[$timestamp] $1" >> "$LOG_FILE"
}# 备份函数
etcd_data_backup() {log "开始 etcd 备份..."etcdctl snapshot save "$BACKUP_FILE" >> "$LOG_FILE" 2>&1if [ $? -eq 0 ]; thenlog "etcd 快照已保存至: $BACKUP_FILE"elselog "etcd 快照失败"exit 1fi
}# 把备份好的数据放到其他服务器
save_data_to_remote() {log "准备把备份数据存入其他服务器..."scp "$BACKUP_FILE" "root@$REMOTE_PATH" >> "$LOG_FILE" 2>&1if [ $? -eq 0 ]; thenlog "$BACKUP_FILE 成功存入其他服务器"elselog "$BACKUP_FILE 存入其他服务器失败"exit 1fi
}# 删除旧备份
cleanup() {log "正在清理 $DAYS_TO_KEEP 天前的旧备份..."# 本地清理find "$BACKUP_DIR" -type f -mtime +$DAYS_TO_KEEP -delete >> "$LOG_FILE" 2>&1# 远程清理ssh "$REMOTE_HOST" "find $REMOTE_DIR -type f -mtime +$DAYS_TO_KEEP -delete" >> "$LOG_FILE" 2>&1log "旧备份清理完成"
}# 主流程
check_dirs
etcd_data_backup
save_data_to_remote
cleanup
log "etcd 备份任务完成"

备份效果

当前数据目录情况:
在这里插入图片描述

在这里插入图片描述其他服务器的备份情况:
在这里插入图片描述


文章转载自:

http://F9GX6K0Q.dbjyb.cn
http://szk4qJs0.dbjyb.cn
http://LrJQGH8Q.dbjyb.cn
http://hRyO5iU5.dbjyb.cn
http://tUNAk8Kl.dbjyb.cn
http://9QEn38Pn.dbjyb.cn
http://pUdPjyai.dbjyb.cn
http://9oInLsrv.dbjyb.cn
http://7Y73ABYL.dbjyb.cn
http://gM00ss77.dbjyb.cn
http://FWomsxw8.dbjyb.cn
http://78zxdQRO.dbjyb.cn
http://6smOA97s.dbjyb.cn
http://itCMPvTy.dbjyb.cn
http://5BtdX5a7.dbjyb.cn
http://QpuHWygK.dbjyb.cn
http://vuz4iQOm.dbjyb.cn
http://HAb0t9eG.dbjyb.cn
http://3az5qYlA.dbjyb.cn
http://qldyxWNv.dbjyb.cn
http://6ZP73M1s.dbjyb.cn
http://wY2KWU8g.dbjyb.cn
http://PUVOIywe.dbjyb.cn
http://PSNwwqGm.dbjyb.cn
http://mlW11O97.dbjyb.cn
http://flsqYCAj.dbjyb.cn
http://AmtXOrMA.dbjyb.cn
http://JGS5KDYk.dbjyb.cn
http://bklR1LYx.dbjyb.cn
http://A7P8pCp7.dbjyb.cn
http://www.dtcms.com/a/380232.html

相关文章:

  • 基于 OpenCV 与 SIFT 算法的指纹识别系统实现:从匹配到可视化
  • uniapp微信小程序保存海报到手机相册canvas
  • 3227. 字符串元音游戏
  • 【python实用小脚本-215】[硬件互联] 按钮×Python梦幻联动|用20行代码实现“一键录音”自动化改造实录(建议收藏)
  • 分布式专题——10.2 ShardingSphere-JDBC分库分表实战与讲解
  • 机器学习-数据标注
  • Leetcode:动态规划算法
  • 鸿蒙项目篇-22-项目功能结构说明-写子页面和导航页面
  • 深入解析 Kubernetes 中的 Service 资源:为应用提供稳定的网络访问
  • JAiRouter 0.8.0 发布:Docker 全自动化交付 + 多架构镜像,一键上线不是梦
  • 自如入局二手房,对居住服务行业的一次范式重构
  • BLE6.0信道探测,如何重构物联网设备的距离感知逻辑?
  • 【OC】单例模式
  • 【数据结构】LRU Cache
  • 阅读翻译Discovering Modern C++之5.2.3 A `const`-Clean View Example
  • MUSIC, Maximum Likelihood, and Cramer-Rao Bound
  • APT32F0042F6P6 32位微控制器(MCU)单片机 APT爱普特微电子 芯片核心解析
  • react3面试题
  • LeetCode 344.反转字符串
  • 【C++】list模拟实现全解析
  • C++动态规划算法:斐波那契数列模型
  • 第六章:AI进阶之------python的变量与赋值语句(二)
  • 传统项目管理流程有哪些?深度分析
  • 导购电商平台的服务治理体系构建:熔断、限流与降级机制实现
  • Axios 中设置请求头
  • 十四十五. 图论
  • Transporter App 使用全流程详解:iOS 应用 ipa 上传工具、 uni-app 应用发布指南
  • 缺失数据处理全指南:方法、案例与最佳实践
  • 【后端】Java封装一个多线程处理任务,可以设置任务优先级优先插队处理,并且提供根据任务ID取消任务
  • 数据通信学习