4.5 数据库与迁移

数据库配置

dwz-server 使用 GORM 抽象数据库访问,通过 DATABASE_DRIVER 在三种数据库之间切换,同一份代码不需要重新编译

SQLite(独立模式默认)

database:
  driver: sqlite
  filepath: "./config/sqlite.db"
  • 驱动:github.com/glebarez/sqlite纯 Go 实现,无需 CGO
  • 适合个人、小型项目、试用
  • 数据文件位置建议放在挂载的持久化卷中

MySQL

database:
  driver: mysql
  host: localhost
  port: 3306
  username: root
  password: password
  dbname: dwz_db
  • 驱动:gorm.io/driver/mysql
  • 建议版本:MySQL 5.7+ / 8.0
  • 字符集:请使用 utf8mb4 以支持 emoji
  • 生产环境建议单独创建用户并授予该数据库的全部权限

PostgreSQL

database:
  driver: postgresql
  host: localhost
  port: 5432
  username: postgres
  password: password
  dbname: dwz_db
  • 驱动:gorm.io/driver/postgres
  • 建议版本:PostgreSQL 12+

数据库迁移

服务首次启动会自动执行 GORM AutoMigrate 创建表结构。升级版本时,新版本会在启动时自动对齐表结构,一般无需手动执行 SQL 脚本

重要:升级生产数据库前请先备份。虽然 AutoMigrate 只做增量变更,但跨大版本升级建议在预发环境先验证。

数据库选型建议

  • < 100 万短链接、单实例:SQLite 足够
  • 百万级短链接、单机:MySQL 或 PostgreSQL
  • 千万级 / 多实例集群:MySQL/PG 主从 + Redis 分布式 ID