MySQL / InnoDB 内核
AliSQL 8.0.44-3 以 MySQL 8.0.44 Server 和 InnoDB 为基础。8.0.44-1 首发 DuckDB HTAP,8.0.44-2 扩展 Vector Index、Native Flashback 与两种 Binlog 优化;8.0.44-3 进一步加入 Binlog 实时复制(BRR),并升级内嵌 DuckDB 源码。
一个 SQL 入口,两条工作负载路径
应用与 MySQL 客户端/驱动
│
MySQL 协议 + SQL 层
│
认证 · 优化器 · Binlog
│
┌───────┴────────┐
│ │
InnoDB DuckDB
事务、行存储、 列式扫描、
向量索引 连接、聚合
| 模块 | 用途 | 数据组织 | AliSQL 扩展 |
|---|---|---|---|
| MySQL / InnoDB | OLTP 和事务数据 | 行存储与 B+Tree 索引 | Vector Index、历史查询、Binlog 提交优化、BRR |
| DuckDB | OLAP 与归档查询 | 列式存储与向量化执行 | SQL 转换、表转换、复制、故障恢复和资源管理 |
应用继续使用 MySQL 协议和 SQL 入口,但两个引擎并不共享全部 SQL 与存储语义。上线前仍需验证所用功能、数据类型、DDL、复制和故障恢复。
当前内核能力概览
| 功能 | 实现方式 | 8.0.44-3 默认值 | 主要限制 |
|---|---|---|---|
| Native Vector Search | HNSW 图持久化在 InnoDB 辅助表中 | vidx_disabled=ON | 仅 InnoDB;索引操作要求 READ COMMITTED |
| Native Flashback | 根据快照历史和保留 Undo 重建 InnoDB 历史读视图 | 快照任务 OFF | 仅支持 InnoDB 基础表的历史 SELECT;不能替代备份 |
| Persist Binlog Into Redo V2 | 符合条件的 Binlog 事件随 Redo 持久化,再由后台线程写入 Binlog | OFF | 需要满足严格的事务和两阶段提交(2PC)条件;否则使用标准 Binlog Group Commit |
| Binlog Cache Free Flush | 已完成的大事务缓存可以直接成为下一个 Binlog 文件,避免再次复制大量数据 | OFF | 要求符合条件的落盘缓存;DuckDB 模式生效时使用专用提交路径 |
| Binlog 实时复制(BRR) | 在源端提交前传输符合条件的事件,并可在副本专用线程上提前回放 | 源端/接收端开关 OFF;binlog_realtime_apply_workers=0 | 提前回放要求 GTID 与并行复制;不等同于同步复制,也不保证零延迟 |
| DuckDB Storage Engine | 通过 MySQL Storage Engine API 集成 DuckDB | duckdb_mode=NONE | 用于 OLAP;不保证完整的 MySQL SQL 与存储语义 |
Binlog 实时复制(BRR)
BRR 在 AliSQL 8.0.44-3 中引入,让符合条件的 DDL 和大事务在源端执行、传输与副本处理之间形成重叠。最终完成仍遵循源端事务结果与 GTID 依赖,不等同于同步复制,也不保证零延迟。
- **默认关闭:**源端/接收端开关为
OFF,binlog_realtime_apply_workers=0。 - **大事务:**要求源端
binlog_cache_free_flush=ON、符合条件的落盘缓存,且不启用 Binlog 事务压缩;源端事务大小阈值默认为 512 GiB。 - **提前回放:**要求 GTID、并行复制、非零 BRR 工作线程、
replica_preserve_commit_order=OFF以及文档规定的通道限制。DuckDB Multi-Trx Batch 要求replica_parallel_workers=0,因此两种模式不能直接沿用相同配置。 - **监控:**通过
BRR_SOURCE_TRX_INFO、BRR_SENDER_TRX_INFO、BRR_REPLICA_INFO及 BRR 状态计数器观察正在进行的工作。
启用前请阅读 8.0.44-3 版本说明与该版本的 Binlog 实时复制指南。
使用限制
每项功能都有独立的配置和限制:
- Native Vector Search 将基础行和图节点纳入 InnoDB 事务,但当前要求
READ COMMITTED,同一向量表的并发写入会串行执行。 - Flashback 依赖快照生成和 Undo 保留。只开启查询开关并不会自动产生可恢复的历史。
- Binlog in Redo 优化符合条件的较小事务缓存;检查失败时按事务回退。
- Free Flush 面向溢出的大事务缓存,启用条件与 Binlog in Redo 不同。
- BRR 将符合条件的复制工作前移到源端提交前;最终完成仍受源端事务结果和 GTID 依赖约束。
- DuckDB 使用自己的表存储和分析副本;延迟敏感的事务写入应保留在 InnoDB 上。
进一步阅读
- DuckDB 分析 — SQL 转换、列式执行、分析副本和使用限制。
- Native Vector Search — HNSW 持久化、缓存层、SQL、参数和并发。
- Native Flashback — 快照生成、Undo 保留、历史查询和使用限制。
- Binlog 优化 — Binlog in Redo 和 Free Flush 如何处理符合条件的提交,以及何时回退。
- 快速开始 — 构建源码并分别验证各项功能。
开源版本与托管服务属于不同运行环境
阿里云 RDS MySQL 提供部分 AliSQL 功能,但产品版本、拓扑、参数名称、默认值和支持策略可能不同。自建源码版本请使用本站和仓库 Wiki;RDS 实例请使用 RDS 产品文档。