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}"

相关推荐
智购科技智能售货柜7 小时前
2026自动售货机整机可靠性测试:从高低温交变到EMC电磁兼容的认证工程实践~YH
运维·服务器·数据库·人工智能·物联网
ltl7 小时前
RocksDB 架构演进:相对 LevelDB 的 diff 地图
数据库
ltl7 小时前
存储读取性能优化:索引、Bloom Filter 与读放大
数据库
xier_ran11 小时前
【infra之路】GPU 存储层次总结:L1 / L2 / HBM
java·网络·数据库
山甫aa12 小时前
Javaweb---MyBatis增删改查
java·数据库·后端·mybatis·springboot
其实防守也摸鱼13 小时前
接口审计:从原理到实践的万字深度指南
数据库·安全·自动化·github·copilot
@insist12313 小时前
系统集成项目管理工程师-信息和文档管理
网络·数据库·软考·系统集成项目管理工程师·软考中项·软件水平考试
残 风15 小时前
PostgreSQL 存储机制详解
数据库·postgresql·开源·数据库开发
JacksonMx15 小时前
Java CompletableFuture 异步编程实战:从入门到架构师避坑指南
linux·数据库·python