deploy(M00-E): 补充备份恢复检查模板
This commit is contained in:
@@ -12,8 +12,8 @@
|
||||
| `domain-https.sh` | 检查固定 API 域名、Nginx 模板、站点启用状态、TLS 和健康端点。 |
|
||||
| `certbot.sh` | 检查 Certbot、证书文件、续期配置和 `certbot.timer`,输出人工签发/续期命令。 |
|
||||
| `emqx.sh` | 检查 EMQX、mosquitto-clients、systemd、1883/18083 端口和 ACL/授权模板。 |
|
||||
| `backup.sh` | 生成 manifest-only 备份记录。 |
|
||||
| `restore.sh` | 输出人工恢复要求,不自动改动生产数据。 |
|
||||
| `backup.sh` | 检查备份工具/目录/模板,生成 manifest-only 备份记录。 |
|
||||
| `restore.sh` | 输出人工恢复要求和 runbook,不自动改动生产数据。 |
|
||||
| `rollback.sh` | 列出 release 回滚点。 |
|
||||
| `diagnose.sh` | 汇总快检、仓库、磁盘、服务和公开端点。 |
|
||||
|
||||
|
||||
+34
-1
@@ -5,6 +5,37 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
# shellcheck source=lib.sh
|
||||
. "${SCRIPT_DIR}/lib.sh"
|
||||
|
||||
qipai_backup_status() {
|
||||
local policy_template runbook
|
||||
policy_template="${SCRIPT_DIR}/../../deploy/backup/backup-policy.template.json"
|
||||
runbook="${SCRIPT_DIR}/../../deploy/backup/backup-restore-runbook.md"
|
||||
|
||||
qipai_info "backup root: ${APP_ROOT}/backups"
|
||||
qipai_info "mysql backup dir: ${APP_ROOT}/backups/mysql"
|
||||
qipai_info "emqx backup dir: ${APP_ROOT}/backups/emqx"
|
||||
qipai_info "files backup dir: ${APP_ROOT}/backups/files"
|
||||
qipai_info "policy template: ${policy_template}"
|
||||
qipai_info "runbook: ${runbook}"
|
||||
|
||||
[ -f "$policy_template" ] && qipai_pass "backup policy template exists" || qipai_warn "backup policy template not found"
|
||||
[ -f "$runbook" ] && qipai_pass "backup/restore runbook exists" || qipai_warn "backup/restore runbook not found"
|
||||
|
||||
qipai_command_status mysqldump
|
||||
qipai_command_status mysql
|
||||
qipai_command_status tar
|
||||
qipai_command_status gzip
|
||||
|
||||
if command -v emqx >/dev/null 2>&1; then
|
||||
qipai_pass "emqx export command available"
|
||||
else
|
||||
qipai_warn "emqx command not found; EMQX export unavailable"
|
||||
fi
|
||||
|
||||
for dir in "${APP_ROOT}/backups/mysql" "${APP_ROOT}/backups/emqx" "${APP_ROOT}/backups/files" "${APP_ROOT}/backups/manual"; do
|
||||
[ -d "$dir" ] && qipai_pass "backup directory exists: $dir" || qipai_warn "backup directory not found: $dir"
|
||||
done
|
||||
}
|
||||
|
||||
qipai_backup() {
|
||||
qipai_require_root_for_write
|
||||
local backup_dir manifest
|
||||
@@ -15,6 +46,7 @@ qipai_backup() {
|
||||
{
|
||||
"generatedAt": "$(qipai_timestamp)",
|
||||
"type": "M00_MANIFEST_ONLY",
|
||||
"policyTemplate": "deploy/backup/backup-policy.template.json",
|
||||
"mysql": "SKIPPED_NO_CONFIG",
|
||||
"emqx": "SKIPPED_NO_CONFIG",
|
||||
"uploads": "SKIPPED_NO_UPLOAD_DIR",
|
||||
@@ -26,5 +58,6 @@ EOF
|
||||
|
||||
if [ "${1:-}" = "--run" ]; then
|
||||
qipai_backup
|
||||
elif [ "${1:-}" = "--status" ]; then
|
||||
qipai_backup_status
|
||||
fi
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ qipai_init_layout() {
|
||||
"${APP_ROOT}/qipai-backend"
|
||||
"${APP_ROOT}/qipai-admin"
|
||||
"${APP_ROOT}/qipai-miniapp"
|
||||
"${APP_ROOT}/uploads"
|
||||
"${APP_ROOT}/releases"
|
||||
"${APP_ROOT}/backups/mysql"
|
||||
"${APP_ROOT}/backups/emqx"
|
||||
@@ -49,6 +50,7 @@ qipai_init_layout() {
|
||||
"backend": "${APP_ROOT}/qipai-backend",
|
||||
"admin": "${APP_ROOT}/qipai-admin",
|
||||
"miniapp": "${APP_ROOT}/qipai-miniapp",
|
||||
"uploads": "${APP_ROOT}/uploads",
|
||||
"releases": "$(qipai_release_dir)",
|
||||
"redis": "RESERVED/DISABLED"
|
||||
}
|
||||
@@ -59,4 +61,3 @@ EOF
|
||||
if [ "${1:-}" = "--run" ]; then
|
||||
qipai_init_layout
|
||||
fi
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
QIPAI_DEPLOY_VERSION="${QIPAI_DEPLOY_VERSION:-0.1.3-m00-emqx-check}"
|
||||
QIPAI_DEPLOY_VERSION="${QIPAI_DEPLOY_VERSION:-0.1.4-m00-backup-check}"
|
||||
APP_ROOT="${APP_ROOT:-/opt/apps}"
|
||||
QIPAI_REPO_URL="${QIPAI_REPO_URL:-ssh://git@127.0.0.1:2222/panda/qipai.git}"
|
||||
QIPAI_PUBLIC_REPO_URL="${QIPAI_PUBLIC_REPO_URL:-ssh://git@git.txyundm.cn:2222/panda/qipai.git}"
|
||||
|
||||
@@ -8,10 +8,10 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
qipai_restore() {
|
||||
qipai_warn "restore is not automatic in M00 baseline"
|
||||
qipai_info "Required manual inputs: backup path, MySQL dump, uploads archive, EMQX export"
|
||||
qipai_info "Runbook: deploy/backup/backup-restore-runbook.md"
|
||||
qipai_info "No production data was changed."
|
||||
}
|
||||
|
||||
if [ "${1:-}" = "--run" ]; then
|
||||
qipai_restore
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user