生产环境部署
本文介绍 AutoTable 在生产环境的最佳配置实践。
推荐配置
方案一:validate 模式(推荐)
yaml
auto-table:
mode: validate
show-banner: false效果:
- 启动时校验数据库表结构与实体是否一致
- 不一致则启动失败,及早发现问题
- 不执行任何 DDL 语句
适用场景:
- 大多数生产环境
- 需要确保代码与数据库一致
- 配合 Flyway/Liquibase 管理变更
方案二:完全禁用
yaml
auto-table:
enable: false效果:
- 完全跳过 AutoTable 逻辑
- 零风险
适用场景:
- 对表结构变更有严格审批流程
- 完全由 DBA 管理数据库
不推荐的配置
生产环境禁止使用
yaml
auto-table:
mode: create # 会删除所有数据!
mode: update # 可能产生意外变更
auto-drop-table: true # 会删除表!
auto-drop-column: true # 会删除字段!环境隔离
多 Profile 配置
yaml
# application.yml(默认)
auto-table:
enable: false
---
# application-dev.yml(开发)
auto-table:
enable: true
mode: update
auto-drop-column: true
---
# application-test.yml(测试)
auto-table:
enable: true
mode: create
---
# application-prod.yml(生产)
auto-table:
mode: validate启动命令
bash
# 开发环境
java -jar app.jar --spring.profiles.active=dev
# 生产环境
java -jar app.jar --spring.profiles.active=prod与数据库版本管理配合
推荐流程
1. 开发环境使用 AutoTable update 模式快速迭代
2. 使用 AutoTable 的 SQL 记录功能导出变更
3. 将变更 SQL 整理为 Flyway/Liquibase 脚本
4. 生产环境通过 Flyway/Liquibase 执行变更
5. 生产环境 AutoTable 使用 validate 模式校验SQL 记录配置
yaml
auto-table:
record-sql:
enable: true
record-type: file
folder-path: ./sql-history
version: "1.0.0"监控与告警
启动校验失败告警
在 validate 模式下,结构不一致会抛出异常,可配合监控系统:
java
@Component
public class AutoTableValidateListener implements ValidateFinishCallback {
@Override
public void validateFinish(boolean status, String dialect, CompareTableInfo info) {
if (!status) {
// 发送告警通知
alertService.send("AutoTable 校验失败:" + info.validateFailedMessage());
}
}
}安全建议
- 最小权限原则:生产环境数据库账号只授予 SELECT 权限
- 禁用危险配置:确保
auto-drop-*配置全部为 false - 日志审计:开启 SQL 记录,便于追溯
- 灰度发布:先在预发环境验证,再上生产
