etcd 备份:
etcd is running.
{"level":"info","ts":1698069449.0897536,"caller":"snapshot/v3_snapshot.go:119","msg":"created temporary db file","path":"/root/etcd-backup/etcd_backup_2023年10月23日21时57分.db.part"}
{"level":"info","ts":"2023-10-23T21:57:29.097+0800","caller":"clientv3/maintenance.go:200","msg":"opened snapshot stream; downloading"}
{"level":"info","ts":1698069449.0973763,"caller":"snapshot/v3_snapshot.go:127","msg":"fetching snapshot","endpoint":"https://192.168.1.208:2379"}
{"level":"info","ts":"2023-10-23T21:57:29.380+0800","caller":"clientv3/maintenance.go:208","msg":"completed snapshot read; closing"}
{"level":"info","ts":1698069449.5135188,"caller":"snapshot/v3_snapshot.go:142","msg":"fetched snapshot","endpoint":"https://192.168.1.208:2379","size":"26 MB","took":0.423625173}
{"level":"info","ts":1698069449.5136635,"caller":"snapshot/v3_snapshot.go:152","msg":"saved","path":"/root/etcd-backup/etcd_backup_2023年10月23日21时57分.db"}
Snapshot saved at /root/etcd-backup/etcd_backup_2023年10月23日21时57分.db
Backup successful: /root/etcd-backup/etcd_backup_2023年10月23日21时57分.db
etcd-backup.sh
使用方法: 先粘贴到 notpad++,然后再复制粘贴到 .sh 文件中。 不然会有编码问题。
#!/bin/bash SERVICE_NAME="etcd" # 检查服务是否在运行 if systemctl is-active --quiet $SERVICE_NAME; then echo "$SERVICE_NAME is running." else echo "$SERVICE_NAME is not running." exit 1 fi
获取当前主机的 IP 地址
CURRENT_IP=$(hostname -I | cut -d' ' -f1)
设置备份存储路径
BACKUP_DIR="/root/etcd-backup"
设置 etcd 证书路径
CACERT="/etc/ssl/etcd/ssl/ca.pem" CERT="/etc/ssl/etcd/ssl/admin-master1.pem" KEY="/etc/ssl/etcd/ssl/admin-master1-key.pem"
检查备份目录是否存在,如果不存在则创建
if [ ! -d "$BACKUP_DIR" ]; then mkdir -p "$BACKUP_DIR" fi
获取当前时间的年、月、日、小时和分钟
YEAR=$(date +"%Y") MONTH=$(date +"%m") DAY=$(date +"%d") HOUR=$(date +"%H") MINUTE=$(date +"%M")
构建格式化的时间戳
TIMESTAMP="${YEAR}年${MONTH}月${DAY}日${HOUR}时${MINUTE}分"
构建备份文件名
BACKUP_FILE="$BACKUP_DIR/etcd_backup_$TIMESTAMP.db"
执行 etcd 备份命令
ETCDCTL_API=3 /usr/local/bin/etcdctl --endpoints="https://$CURRENT_IP:2379" snapshot save "$BACKUP_FILE"
--cacert="$CACERT"
--cert="$CERT"
--key="$KEY"
if [ $? -eq 0 ]; then echo "Backup successful: $BACKUP_FILE" else echo "Backup failed" fi