跳转到主要内容

快速开始

构建当前 AliSQL 源码后,先启动 MySQL / InnoDB;需要 OLAP 时再启用 DuckDB。以下命令以当前 alibaba/AliSQL README 和 8.0.44-2 指南为准。

源码构建,不是 RDS MySQL

本页只适用于开源版 AliSQL。RDS MySQL 的二进制、拓扑、参数、备份和监控由云服务管理,版本与默认值可能不同。

1. 准备构建环境

使用包含以下工具的 Linux 开发环境:

要求仓库记录的最低版本
CMake3.x 或更高版本
PythonPython 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=NONEInnoDB 事务表
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 节点配置指南。该指南包含目录布局、复制配置和批量应用限制。

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=NONEDuckDB 分析
Native Vector Searchvidx_disabled=ONNative Vector Search
Native Flashback任务 OFF;Undo 保留时间 0Native Flashback
Persist Binlog Into Redo V2persist_binlog_to_redo=OFFBinlog 优化
Binlog Cache Free Flushbinlog_cache_free_flush=OFFBinlog 优化

投入生产前

  1. 固定并记录本次构建使用的 AliSQL Commit 或版本。
  2. 明确配置凭据、文件所有权、端口、Socket、日志和进程管理。
  3. 使用接近生产的流量验证 SQL、数据类型、排序规则、DDL 和客户端行为。
  4. 在目标硬件和持久化设置上进行基准测试。
  5. 在目标拓扑上测试复制、崩溃恢复、备份、恢复和回滚流程。
  6. 在确认启用条件和回退行为前,不要开启默认关闭的功能。

参考来源