快速开始
构建当前 AliSQL 源码后,先启动 MySQL / InnoDB;需要 OLAP 时再启用 DuckDB。以下命令以当前 alibaba/AliSQL README 和 8.0.44-2 指南为准。
本页只适用于开源版 AliSQL。RDS MySQL 的二进制、拓扑、参数、备份和监控由云服务管理,版本与默认值可能不同。
1. 准备构建环境
使用包含以下工具的 Linux 开发环境:
| 要求 | 仓库记录的最低版本 |
|---|---|
| CMake | 3.x 或更高版本 |
| Python | Python 3 |
| 编译器 | GCC 7+ 或 Clang 5+ |
| 源码工具 | Git 和标准 C/C++ 构建工具 |
构建过程会占用较多资源。请确保源码和安装目录有足够空间,首次构建建议使用独立的开发环境。
2. 构建并安装
git clone https://github.com/alibaba/AliSQL.git
cd AliSQL
# 配置并编译 Release 版本。
sh build.sh -t release -d ~/alisql
# 安装到 -d 指定的目录。
make install
省略 -t 时,build.sh 默认构建 Debug 版本。它也支持 ASan、TSan 和覆盖率构建,具体选项以当前源码目录中的帮助信息为准:
sh build.sh --help
3. 初始化数据目录
--initialize-insecure 会创建无密码的 root 账户。该选项只适合隔离的本地测试;在服务接入任何网络前,请先设置凭据。
~/alisql/bin/mysqld \
--initialize-insecure \
--datadir=~/alisql/data
4. 选择启动配置
duckdb_mode 在启动时选择,服务运行期间为只读。先从以下配置中选择一项:
| 模式 | 启动选项 | 启用内容 |
|---|---|---|
| MySQL / InnoDB | --duckdb_mode=NONE | InnoDB 事务表 |
| DuckDB 分析 | --duckdb_mode=ON | 同一 AliSQL 进程中的 DuckDB 存储引擎表 |
请在一个终端中启动服务。仓库默认值是 duckdb_mode=NONE,这里显式写出它,便于确认当前模式。
# MySQL / InnoDB 基线
~/alisql/bin/mysqld \
--datadir=~/alisql/data \
--duckdb_mode=NONE
运行后面的分析示例前,请先正常停止开发服务,再使用以下选项重启:
~/alisql/bin/mysqld \
--datadir=~/alisql/data \
--duckdb_mode=ON
在另一个终端中连接:
~/alisql/bin/mysql -uroot
测试功能前,确认二进制版本、启动配置和已注册的存储引擎:
SELECT VERSION();
SHOW GLOBAL VARIABLES LIKE 'duckdb_mode';
SHOW ENGINES;
5. 验证 InnoDB
下面的基础测试不会启用其他功能,只验证 InnoDB 事务:
CREATE DATABASE demo;
USE demo;
CREATE TABLE accounts (
id BIGINT PRIMARY KEY,
balance DECIMAL(18,2) NOT NULL
) ENGINE=InnoDB;
START TRANSACTION;
INSERT INTO accounts VALUES (1, 100.00), (2, 80.00);
UPDATE accounts SET balance = balance - 20.00 WHERE id = 1;
UPDATE accounts SET balance = balance + 20.00 WHERE id = 2;
COMMIT;
SELECT * FROM accounts ORDER BY id;
6. 尝试 DuckDB 分析
本节要求服务以 --duckdb_mode=ON 启动。
USE demo;
CREATE TABLE sales (
id BIGINT PRIMARY KEY,
region VARCHAR(32),
amount DECIMAL(18,2)
) ENGINE=DuckDB;
INSERT INTO sales VALUES
(1, 'East', 120.50),
(2, 'West', 98.00),
(3, 'East', 64.50);
SELECT region, SUM(amount) AS revenue
FROM sales
GROUP BY region
ORDER BY revenue DESC;
如需使用 InnoDB 主库与 DuckDB 副本拓扑,请阅读官方 DuckDB 节点配置指南。该指南包含目录布局、复制配置和批量应用限制。
7. 尝试 Native Vector Search
VIDX 属于 InnoDB,不依赖 DuckDB 模式。向量功能默认关闭,使用索引的向量操作要求 READ COMMITTED:
SET GLOBAL vidx_disabled = OFF;
SET SESSION transaction_isolation = 'READ-COMMITTED';
USE demo;
CREATE TABLE embeddings (
id BIGINT PRIMARY KEY,
content VARCHAR(120),
embedding VECTOR(3),
VECTOR INDEX embedding_hnsw (embedding) M=6 DISTANCE=COSINE
) ENGINE=InnoDB;
INSERT INTO embeddings VALUES
(1, 'first document', VEC_FROMTEXT('[0.1,0.2,0.3]')),
(2, 'second document', VEC_FROMTEXT('[0.2,0.1,0.4]'));
SELECT id,
content,
VEC_DISTANCE_COSINE(
embedding,
VEC_FROMTEXT('[0.1,0.2,0.3]')
) AS distance
FROM embeddings
ORDER BY distance
LIMIT 10;
在修改图或缓存参数前,先阅读 Native Vector Search。当前实现只支持 InnoDB 上的向量索引,并且不支持对同一向量表并发写入。
默认值
AliSQL 8.0.44-2 中的大多数新增能力需要明确启用:
| 功能 | 开源默认值 | 相关文档 |
|---|---|---|
| DuckDB 存储引擎 | duckdb_mode=NONE | DuckDB 分析 |
| Native Vector Search | vidx_disabled=ON | Native Vector Search |
| Native Flashback | 任务 OFF;Undo 保留时间 0 | Native Flashback |
| Persist Binlog Into Redo V2 | persist_binlog_to_redo=OFF | Binlog 优化 |
| Binlog Cache Free Flush | binlog_cache_free_flush=OFF | Binlog 优化 |
投入生产前
- 固定并记录本次构建使用的 AliSQL Commit 或版本。
- 明确配置凭据、文件所有权、端口、Socket、日志和进程管理。
- 使用接近生产的流量验证 SQL、数据类型、排序规则、DDL 和客户端行为。
- 在目标硬件和持久化设置上进行基准测试。
- 在目标拓扑上测试复制、崩溃恢复、备份、恢复和回滚流程。
- 在确认启用条件和回退行为前,不要开启默认关闭的功能。