backupVM
This commit is contained in:
parent
e93dfa80a8
commit
aaa782e22c
@ -29,7 +29,8 @@ else
|
|||||||
docker restart maria
|
docker restart maria
|
||||||
sleep 10
|
sleep 10
|
||||||
fi
|
fi
|
||||||
/usr/bin/mysqldump --column-statistics=0 --user="${dbUser}" --password="${dbPassword}" --host="${dbHost}" --port=${dbPort} ${dbName} >/tmp/${hostName}_${dbName}.sql
|
#/usr/bin/mysqldump --column-statistics=0 --user="${dbUser}" --password="${dbPassword}" --host="${dbHost}" --port=${dbPort} ${dbName} >/tmp/${hostName}_${dbName}.sql
|
||||||
|
/usr/bin/mysqldump --column-statistics=0 -uroot -pAbcd@1234 -h0.0.0.0 gitea > /tmp/fenny_gitea.sql
|
||||||
sed -i 's/lower_case_table_names=0/lower_case_table_names=1/g' /root/mysql/conf/append.cnf
|
sed -i 's/lower_case_table_names=0/lower_case_table_names=1/g' /root/mysql/conf/append.cnf
|
||||||
|
|
||||||
rm sql -fr || true
|
rm sql -fr || true
|
||||||
|
66
bk.sh
Executable file
66
bk.sh
Executable file
@ -0,0 +1,66 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 获取今天的日期信息
|
||||||
|
current_year=$(date +%Y)
|
||||||
|
current_month=$(date +%m)
|
||||||
|
current_day=$(date +%d)
|
||||||
|
# 定义指定的日子(1-7 表示周一到周日)
|
||||||
|
today=1 # 例如:3 表示周三
|
||||||
|
|
||||||
|
current_weekday=$(date +%u) # 1-7 (周一到周日)
|
||||||
|
|
||||||
|
# 首先确认今天是否为指定的日子
|
||||||
|
if [[ $current_weekday -ne $today ]]; then
|
||||||
|
echo "今天不是周${today},退出脚本。"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 获取当前月份的天数
|
||||||
|
last_day_of_month=$(date -d "$current_year-$current_month-01 +1 month -1 day" +%d)
|
||||||
|
|
||||||
|
# 计算本月的第几个指定的日子
|
||||||
|
today_count=0
|
||||||
|
for ((day = 1; day <= last_day_of_month; day++)); do
|
||||||
|
# 使用明确的日期格式 YYYY-MM-DD
|
||||||
|
weekday=$(date -d "${current_year}-${current_month}-${day}" +%u)
|
||||||
|
if [[ $weekday -eq $today ]]; then
|
||||||
|
# 如果是指定的日子,且日期小于等于今天,则计入统计
|
||||||
|
if [[ $day -le $current_day ]]; then
|
||||||
|
((today_count++))
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# 打印调试信息
|
||||||
|
echo "本月的第几个指定的日子: $today_count"
|
||||||
|
|
||||||
|
# 根据第几个指定的日子设置参数
|
||||||
|
case $today_count in
|
||||||
|
1)
|
||||||
|
param1="miracle"
|
||||||
|
param2="elasticsearch-0"
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
param1="lydia"
|
||||||
|
param2="elasticsearch-1"
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
param1="emma"
|
||||||
|
param2="elasticsearch-2"
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
param1="niyon"
|
||||||
|
param2="elasticsearch-3"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "今天不是本月的第 1 至第 4 个指定日子,退出脚本。"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# 固定的第三个参数
|
||||||
|
param3="/mnt/toshiba/instanceBackUp"
|
||||||
|
|
||||||
|
# 打印参数并运行 vmBackUp.sh
|
||||||
|
echo "运行 vmBackUp.sh 参数: $param1 $param2 $param3"
|
||||||
|
./vmBackUp.sh "$param1" "$param2" "$param3"
|
100
vmBackUp.sh
Executable file
100
vmBackUp.sh
Executable file
@ -0,0 +1,100 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 检查参数是否提供
|
||||||
|
if [ $# -ne 3 ]; then
|
||||||
|
echo "用法: $0 <虚机名称> <节点名称> <备份路径>"
|
||||||
|
echo "示例: $0 emma es-node1 /backups"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
VM_NAME=$1 # 虚机名称,例如 "emma"
|
||||||
|
NODE_NAME=$2 # ES节点名称,例如 "es-node1"
|
||||||
|
BACKUP_DIR=$3 # 备份路径,例如 "/backups"
|
||||||
|
BACKUP_FILE="${BACKUP_DIR}/${VM_NAME}-backup.tar.gz" # 最新备份文件名
|
||||||
|
ES_HOST="elastic.k8s.xunlang.home" # ES集群地址,根据实际环境修改
|
||||||
|
|
||||||
|
# 确保备份目录存在
|
||||||
|
if [ ! -d "$BACKUP_DIR" ]; then
|
||||||
|
echo "创建备份目录: $BACKUP_DIR"
|
||||||
|
mkdir -p "$BACKUP_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 步骤1: 禁用ES集群分片分配
|
||||||
|
echo "禁用ES集群分片分配..."
|
||||||
|
curl -u elastic:your_secure_password -X PUT "http://${ES_HOST}/_cluster/settings" -H 'Content-Type: application/json' -d'{
|
||||||
|
"persistent": {
|
||||||
|
"cluster.routing.allocation.enable": "none"
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "错误: 禁用ES集群分片分配失败"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 步骤2: 停止虚机
|
||||||
|
echo "停止虚机: $VM_NAME..."
|
||||||
|
lxc stop "$VM_NAME"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "错误: 无法停止虚机 $VM_NAME"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 步骤3: 管理备份文件(保留最近3份)
|
||||||
|
echo "管理备份文件..."
|
||||||
|
if [ -f "${BACKUP_FILE}_bak1" ]; then
|
||||||
|
mv "${BACKUP_FILE}_bak1" "${BACKUP_FILE}_bak2"
|
||||||
|
fi
|
||||||
|
if [ -f "$BACKUP_FILE" ]; then
|
||||||
|
mv "$BACKUP_FILE" "${BACKUP_FILE}_bak1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 步骤4: 执行备份
|
||||||
|
echo "开始备份虚机 $VM_NAME 到 $BACKUP_FILE..."
|
||||||
|
lxc export "$VM_NAME" "$BACKUP_FILE"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "错误: 备份失败"
|
||||||
|
lxc start "$VM_NAME" # 备份失败时尝试重启虚机
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 步骤5: 重启虚机
|
||||||
|
echo "重启虚机: $VM_NAME..."
|
||||||
|
lxc start "$VM_NAME"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "错误: 无法启动虚机 $VM_NAME"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 步骤6: 等待节点加入ES集群
|
||||||
|
echo "等待节点 $NODE_NAME 加入ES集群..."
|
||||||
|
MAX_WAIT=60 # 最大等待时间(秒)
|
||||||
|
WAIT_INTERVAL=5 # 检查间隔(秒)
|
||||||
|
ELAPSED=0
|
||||||
|
while [ $ELAPSED -lt $MAX_WAIT ]; do
|
||||||
|
NODE_COUNT=$(curl -s "http://${ES_HOST}/_cat/nodes" | grep -c "$NODE_NAME")
|
||||||
|
if [ "$NODE_COUNT" -ge 1 ]; then
|
||||||
|
echo "节点 $NODE_NAME 已加入集群"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep $WAIT_INTERVAL
|
||||||
|
ELAPSED=$((ELAPSED + WAIT_INTERVAL))
|
||||||
|
done
|
||||||
|
if [ $ELAPSED -ge $MAX_WAIT ]; then
|
||||||
|
echo "警告: 等待超时,节点 $NODE_NAME 未及时加入集群"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 步骤7: 重新启用ES集群分片分配
|
||||||
|
echo "重新启用ES集群分片分配..."
|
||||||
|
curl -X PUT "http://${ES_HOST}/_cluster/settings" -H 'Content-Type: application/json' -d'{
|
||||||
|
"persistent": {
|
||||||
|
"cluster.routing.allocation.enable": "all"
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "错误: 重新启用ES集群分片分配失败"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "备份完成!最新备份文件: $BACKUP_FILE"
|
Loading…
x
Reference in New Issue
Block a user