將低耦合業務拆分為獨立實例/數據庫,物理隔離資源、故障域、權限域。
| 業務域 | 典型库名 | 核心表 | 特點 |
|---|---|---|---|
| 用戶中心 | db_user, db_passport | user, profile, auth_token | 高可用、強一致、低延遲 |
| 交易訂單 | db_trade, db_order | order, order_item, payment | 事務強、寫入重、需分片 |
| 商品目錄 | db_catalog | sku, spu, category, attr | 讀多寫少、適合緩存 |
| 營銷活動 | db_marketing | coupon, activity, promotion | 突發流量、獨立擴縮容 |
| 內存熱點 | db_heap (Memory 引擎) | config, dict, session_cache | 極速讀、重啟可重建 |
| 圖片/文件 | db_media | img_index, file_meta | 大對象、存對象存儲引用 |
| 日志審計 | db_log | access_log, audit_log, error_log | 寫入極大、歸檔、Archive 引擎 |
| 統計分析 | db_stat | daily_uv, funnel, retention | OLAP、寬表、ClickHouse 更佳 |
同一套表結構,按城市/大區/租戶 ID 分佈到不同實例。
db_order_bj, db_order_sh, db_order_gz 或 db_tenant_1001, db_tenant_1002-- 按月分表 t_log_202401, t_log_202402, t_log_202403... -- 按日分表 (極大流量) t_access_20240101, t_access_20240102...
| 業務規模 | 分庫策略 | 分表策略 | 高可用方案 | 中間件 |
|---|---|---|---|---|
| 單機可支撐 | 不分庫 | 不分表 | 雙機熱備 (MHA/Keepalived) | 無 / ProxySQL |
| 多業務域、單庫瓶頸 | 垂直分庫 | 大表 Hash 分表 | 各庫獨立一主多從 | ShardingSphere / MyCat |
| 單表 > 5000W / TB 級 | 垂直 + 水平分庫 | Hash + 時間複合分表 | PXC / 多主多從 | Vitess / TDDL / 自研 Proxy |
| 多租戶 / 多地域 | 租戶/地域分庫 | 租戶內 Hash 分表 | 各實例獨立 HA | 路由層感知租戶 |
pt-online-schema-change / gh-ost 在線 DDL,分片逐個滾動執行。分庫分表是**將大問題拆解為多個小問題**的藝術。核心原則:**垂直拆分隔離業務域、水平拆分打破單機極限、時間維度天然歸檔、Hash 維度均勻分佈**。架構演進要跟上業務增長節奏,提前 6 個月佈局下一階段方案,避免「帶病狂奔」。