# Fabric 备份与恢复 Runbook(v1) ## 1. 范围 - MySQL Center:`fabric_center` - MySQL Guild:`fabric_guild` - 可选:持久卷级别备份(`mysql_center_data` / `mysql_guild_data`) --- ## 2. 备份策略(建议) - 频率:每天 1 次全量(低峰期) - 保留:最近 7~14 天 - 方式:`mysqldump`(逻辑备份)+ 异地对象存储 - 校验:每周至少一次恢复演练 --- ## 3. 手动备份命令 > 在 `Fabric/` 目录执行 ### 3.1 备份 Center ```bash docker exec fabric-mysql-center sh -lc \ 'mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" --single-transaction --quick --routines --events fabric_center' \ > backup-center-$(date +%F-%H%M%S).sql ``` ### 3.2 备份 Guild ```bash docker exec fabric-mysql-guild sh -lc \ 'mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" --single-transaction --quick --routines --events fabric_guild' \ > backup-guild-$(date +%F-%H%M%S).sql ``` ### 3.3 压缩 ```bash gzip backup-center-*.sql gzip backup-guild-*.sql ``` --- ## 4. 恢复流程 ### 4.1 停写(建议) - 先停 `backend-center` / `backend-guild`,避免恢复时写入冲突。 ### 4.2 恢复 Center ```bash gunzip -c backup-center-YYYY-MM-DD-HHMMSS.sql.gz | \ docker exec -i fabric-mysql-center sh -lc 'mysql -uroot -p"$MYSQL_ROOT_PASSWORD" fabric_center' ``` ### 4.3 恢复 Guild ```bash gunzip -c backup-guild-YYYY-MM-DD-HHMMSS.sql.gz | \ docker exec -i fabric-mysql-guild sh -lc 'mysql -uroot -p"$MYSQL_ROOT_PASSWORD" fabric_guild' ``` ### 4.4 恢复后检查 - 启动后端服务 - 调用: - `GET /api/healthz` - `GET /api/metrics` - 随机抽查: - 用户登录 - 节点注册列表 - 消息拉取/回补 --- ## 5. 演练清单 - [ ] 恢复耗时记录 - [ ] 数据一致性抽样 - [ ] 回滚预案验证 - [ ] 文档更新(命令/版本/风险) --- ## 6. 风险与注意事项 - 恢复前先确认目标库环境(避免误写生产) - 密钥与密码不要写入仓库,统一走环境变量 - `DB_SYNC` 在生产保持 `false`,结构变更走 migration