ETCD 备份脚本

#!/bin/bash

etcd 备份脚本

用途:备份现有的单节点 etcd 数据

set -e

配置参数

BACKUP_DIR="/etcd-cluster/backup"

BACKUP_DATE=$(date +%Y%m%d_%H%M%S)

BACKUP_FILE="{BACKUP_DIR}/etcd_backup_{BACKUP_DATE}.db"

CONTAINER_NAME="etcd-old"

颜色输出

RED='\033[0;31m'

GREEN='\033[0;32m'

YELLOW='\033[1;33m'

NC='\033[0m' # No Color

echo -e "{GREEN}========================================{NC}"

echo -e "{GREEN}etcd 数据备份脚本{NC}"

echo -e "{GREEN}========================================{NC}"

检查容器是否运行

echo -e "{YELLOW}\[1/5\] 检查 etcd 容器状态...{NC}"

if ! docker ps | grep -q "${CONTAINER_NAME}"; then

echo -e "{RED}错误: 容器 {CONTAINER_NAME} 未运行${NC}"

exit 1

fi

echo -e "{GREEN}✓ 容器运行正常{NC}"

创建备份目录

echo -e "{YELLOW}\[2/5\] 创建备份目录...{NC}"

mkdir -p "${BACKUP_DIR}"

echo -e "{GREEN}✓ 备份目录: {BACKUP_DIR}${NC}"

执行快照备份

echo -e "{YELLOW}\[3/5\] 创建 etcd 快照...{NC}"

docker exec ${CONTAINER_NAME} etcdctl snapshot save /tmp/etcd_snapshot.db

echo -e "{GREEN}✓ 快照创建成功{NC}"

复制快照到宿主机

echo -e "{YELLOW}\[4/5\] 复制快照到宿主机...{NC}"

docker cp {CONTAINER_NAME}:/tmp/etcd_snapshot.db "{BACKUP_FILE}"

echo -e "{GREEN}✓ 快照已保存到: {BACKUP_FILE}${NC}"

验证快照

echo -e "{YELLOW}\[5/5\] 验证快照完整性...{NC}"

docker exec ${CONTAINER_NAME} etcdctl snapshot status /tmp/etcd_snapshot.db --write-out=table

echo -e "{GREEN}✓ 快照验证通过{NC}"

导出所有数据(可选,用于检查)

echo -e "{YELLOW}\[额外\] 导出所有 key-value 数据...{NC}"

docker exec {CONTAINER_NAME} etcdctl get "" --prefix --keys-only \> "{BACKUP_DIR}/all_keys_${BACKUP_DATE}.txt"

docker exec {CONTAINER_NAME} etcdctl get "" --prefix \> "{BACKUP_DIR}/all_data_${BACKUP_DATE}.txt"

echo -e "{GREEN}✓ 数据已导出{NC}"

显示统计信息

echo -e "{GREEN}========================================{NC}"

echo -e "{GREEN}备份完成!{NC}"

echo -e "{GREEN}========================================{NC}"

echo -e "备份文件: ${BACKUP_FILE}"

echo -e "文件大小: (du -h {BACKUP_FILE} | cut -f1)"

echo -e "备份时间: ${BACKUP_DATE}"

echo -e "{GREEN}========================================{NC}"

清理容器内临时文件

docker exec ${CONTAINER_NAME} rm -f /tmp/etcd_snapshot.db

echo -e "{GREEN}备份脚本执行完成!{NC}"

相关推荐
Oueii1 小时前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
未来龙皇小蓝2 小时前
【MySQL-索引调优】11:Group by相关概念
数据库·mysql·性能优化
2401_831824962 小时前
使用Fabric自动化你的部署流程
jvm·数据库·python
njidf2 小时前
Python日志记录(Logging)最佳实践
jvm·数据库·python
twc8292 小时前
大模型生成 QA Pairs 提升 RAG 应用测试效率的实践
服务器·数据库·人工智能·windows·rag·大模型测试
@我漫长的孤独流浪2 小时前
Python编程核心知识点速览
开发语言·数据库·python
2401_851272992 小时前
实战:用Python分析某电商销售数据
jvm·数据库·python
枕布响丸辣2 小时前
MySQL 从入门到精通:完整操作手册与实战指南
数据库·mysql
电商API&Tina3 小时前
【电商API接口】开发者一站式电商API接入说明
大数据·数据库·人工智能·云计算·json
2401_857918293 小时前
用Python和Twilio构建短信通知系统
jvm·数据库·python