k8sConfigs/efk/backUpElasticSearch.sh

69 lines
2.2 KiB
Bash
Raw Normal View History

2025-01-23 01:35:27 +08:00
#!/bin/bash
# 设置日期格式:例如 2024-12-05-23
CURRENT_DATE=$(date "+%Y-%m-%d-%H")
# 获取 Elasticsearch 的 CLUSTER-IP
ELASTICSEARCH_IP=$(microk8s.kubectl get service/elasticsearch -n efk -o json | jq -r '.spec.clusterIP')
# 调试:检查获取到的 IP 地址
echo "Elasticsearch IP: ${ELASTICSEARCH_IP}"
# 如果获取到的 IP 地址为空,则退出脚本
if [ -z "$ELASTICSEARCH_IP" ]; then
echo "无法获取到 Elasticsearch IP 地址,退出脚本。"
exit 1
fi
# Elasticsearch 用户名和密码
USER="elastic"
PASSWORD="your_secure_password"
# 尝试删除当前小时的备份(如果存在)
DELETE_CURRENT_SNAPSHOT_URL="http://${ELASTICSEARCH_IP}:9200/_snapshot/my_backup/snap-${CURRENT_DATE}"
echo "尝试删除当前小时的备份:${DELETE_CURRENT_SNAPSHOT_URL}"
curl -u ${USER}:${PASSWORD} -X DELETE "${DELETE_CURRENT_SNAPSHOT_URL}"
# 检查删除操作是否成功
if [ $? -eq 0 ]; then
echo "成功删除当前小时的备份:${CURRENT_DATE}"
else
echo "当前小时的备份不存在,继续进行创建操作。"
fi
# 创建当前小时的快照
BACKUP_URL="http://${ELASTICSEARCH_IP}:9200/_snapshot/my_backup/snap-${CURRENT_DATE}"
echo "备份请求的 URL: ${BACKUP_URL}"
curl -u ${USER}:${PASSWORD} -X PUT "${BACKUP_URL}" -H 'Content-Type: application/json' -d '{
"indices": "*",
"ignore_unavailable": true,
"include_global_state": false
}'
# 检查备份是否成功
if [ $? -eq 0 ]; then
echo "备份成功:${CURRENT_DATE}"
# 删除7天前的备份
OLD_SNAPSHOT_DATE=$(date --date='7 days ago' "+%Y-%m-%d-%H")
DELETE_URL="http://${ELASTICSEARCH_IP}:9200/_snapshot/my_backup/snap-${OLD_SNAPSHOT_DATE}"
# 打印删除请求的 URL 进行调试
echo "删除旧备份请求的 URL: ${DELETE_URL}"
# 使用 curl 删除旧备份
curl -u ${USER}:${PASSWORD} -X DELETE "${DELETE_URL}"
if [ $? -eq 0 ]; then
echo "成功删除7天前的备份${OLD_SNAPSHOT_DATE}"
else
echo "删除7天前的备份失败${OLD_SNAPSHOT_DATE}"
fi
else
echo "备份失败:${CURRENT_DATE}"
fi
echo "当前快照列表:"
curl -u elastic:your_secure_password -X GET "http://${ELASTICSEARCH_IP}:9200/_snapshot/my_backup/_all" | jq -r '.snapshots[].snapshot'