Establish secure account and managed AI backend
Provide the production foundation for Apple identity, immutable credits, referrals, integrity checks, managed providers, and hardened Docker deployment.
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
# MySQL 8.4 备份与恢复
|
||||
|
||||
## 策略
|
||||
|
||||
- 由 1Panel 每日执行一次完整备份,保留 30 天;备份写入与应用主机隔离的对象存储。
|
||||
- MySQL 启用 binary log,至少保留 7 天,用于完整备份后的时间点恢复。
|
||||
- 数据库备份和对象存储均启用加密;备份账号只授予备份所需权限。
|
||||
- 每月至少在隔离环境恢复一次,并记录恢复点、耗时和校验结果。未做恢复演练的备份不能视为可用。
|
||||
- 发布含 Flyway 迁移的镜像前,先完成一次可验证的备份。Flyway 迁移只向前执行。
|
||||
|
||||
## 命令行完整备份
|
||||
|
||||
先用 `mysql_config_editor` 为受限备份账号建立本机登录路径,避免把密码写入命令行或脚本:
|
||||
|
||||
```bash
|
||||
mysql_config_editor set --login-path=osg-backup \
|
||||
--host=127.0.0.1 --user=osg_backup --password
|
||||
```
|
||||
|
||||
在只允许管理员读取的目录执行一致性备份:
|
||||
|
||||
```bash
|
||||
umask 077
|
||||
mysqldump --login-path=osg-backup \
|
||||
--single-transaction --quick --routines --triggers --events \
|
||||
--set-gtid-purged=OFF --default-character-set=utf8mb4 \
|
||||
osg_account | gzip -9 > "osg_account-$(date -u +%Y%m%dT%H%M%SZ).sql.gz"
|
||||
```
|
||||
|
||||
备份任务应在上传后生成 SHA-256 校验值,并按保留策略删除过期副本。不要将备份、登录路径文件或校验清单提交到 Git。
|
||||
|
||||
## 隔离恢复演练
|
||||
|
||||
恢复目标必须是新建的隔离 MySQL 8.4 实例,不能覆盖生产库:
|
||||
|
||||
```bash
|
||||
mysql --login-path=osg-restore -e \
|
||||
"CREATE DATABASE osg_account_restore CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci"
|
||||
gzip -dc osg_account-YYYYMMDDTHHMMSSZ.sql.gz | \
|
||||
mysql --login-path=osg-restore osg_account_restore
|
||||
mysql --login-path=osg-restore osg_account_restore -e \
|
||||
"SELECT version, success FROM flyway_schema_history ORDER BY installed_rank"
|
||||
```
|
||||
|
||||
恢复后执行应用只读验收、表行数抽样、外键检查和邀请查询测试。时间点恢复应先还原完整备份,再仅回放目标时间之前的 binary log。确认结果后销毁隔离实例及明文恢复文件。
|
||||
|
||||
## 1Panel
|
||||
|
||||
1Panel 的数据库备份任务使用相同的每日频率、异地存储、加密和保留期。启用任务成功/失败通知,并每月下载一份备份到隔离 MySQL 8.4 完成恢复演练。1Panel 面板、工单和截图中不得出现数据库密码、Apple 私钥或供应商 API Key。
|
||||
Reference in New Issue
Block a user