TopcentralMall 数据库架构说明

MariaDB 停止后的替代方案

当前状态

数据库状态用途
**PostgreSQL 16**✅ 运行中主数据库,存储所有业务数据
**MariaDB**❌ 已停止历史遗留,未使用
**Redis**✅ 运行中缓存、会话、消息队列

为什么可以停止 MariaDB?

  • **业务代码统一使用 PostgreSQL**
  • - DATABASE_URL=postgresql+asyncpg://...

    - 所有模型(orders, members, products, sys_users)都基于 PostgreSQL

  • **没有数据依赖 MariaDB**
  • - 检查所有 SQL 查询,未发现 mysql:// 或 MariaDB 连接

    - 没有跨库查询

  • **PostgreSQL 已承担全部职责**
  • - 关系型数据存储

    - JSONB 扩展字段

    - 全文搜索

    - 事务处理

    数据库高可用方案(建议)

    当前:                    建议:
    ┌─────────────┐         ┌─────────────┐     ┌─────────────┐
    │ PostgreSQL  │         │ PostgreSQL  │◄────►│ PostgreSQL  │
    │   主库      │         │   主库      │  同步  │   从库      │
    │  (单点)     │         │             │     │             │
    └─────────────┘         └─────────────┘     └─────────────┘
                                  │
                            ┌─────┴─────┐
                            │  Patroni  │  自动故障转移
                            │   + etcd  │
                            └───────────┘

    实施步骤

  • **已完成**: 停止 MariaDB,释放资源
  • **短期**: 配置 PostgreSQL 流复制(主从)
  • **中期**: 部署 Patroni + etcd 实现自动故障转移
  • **长期**: 阿里云 RDS PostgreSQL 托管服务
  • 数据备份策略

    # 每日全量备份
    0 2 * * * pg_dump topcentral_mall | gzip > /backups/topcentral_mall_$(date +\%Y\%m\%d).sql.gz
    
    # 每6小时增量备份(WAL归档)
    0 */6 * * * /scripts/wal_archive.sh
    
    # 备份保留30天
    find /backups -name "*.sql.gz" -mtime +30 -delete