
apecloud/wesql-serverWeSQL是一款采用云原生架构的MySQL数据库,基于计算-存储分离设计,将所有数据(包括binlog、 schema、存储引擎元数据、WAL及数据文件)完全存储于S3及S3兼容对象存储中。它提供跨可用区零数据丢失的灾难恢复能力,成本接近单个MySQL副本,同时支持BYOC(Bring Your Own Cloud)部署模式,避免厂商锁定。
WeSQL使用未修改的MySQL Server代码库,确保完全兼容MySQL生态,可无缝集成现有MySQL工具和应用。其核心价值在于提供易部署、可扩展、成本效益高且开发者友好的Serverless MySQL解决方案,适用于需要在自有VPC中快速部署云原生数据库的场景。
基于未修改的MySQL Server代码构建,确保与MySQL功能、工具和应用的完全兼容,可快速同步MySQL新版本特性及 bug 修复,无需修改现有应用即可迁移。
采用计算-存储分离架构,计算节点支持自动扩缩容与自动暂停,闲置时可完全关闭以节省成本;使用S3作为存储层,按实际使用量计费,无需预配置存储容量,显著降低存储成本。
依托S3无容量限制特性,支持PB级数据存储,无需横向扩展MySQL实例;提供列存表格式,指定表可采用列存储,压缩率较行存储提升高达10倍,适合存储历史数据、归档记录等大型数据集。
所有状态数据(schema、元数据等)均持久化至S3,确保跨可用区数据可靠性;最近生成的binlog(小于1秒)通过Raft协议同步至Logger节点保障 durability,异步批量刷新至S3;AZ故障时,仅需在其他AZ启动新容器,连接S3即可恢复服务,零数据丢失。
节点可随时关闭并释放计算资源(如EBS卷),重启时从S3自动加载数据恢复服务;无需预部署专用存储服务,简化部署流程;数据天然持久化于S3,备份恢复流程简化,也可结合AWS Backup增强冗余。
WeSQL适用于以下场景:
WeSQL容器通过环境变量进行配置,以下为核心环境变量说明:
| 变量名 | 说明 | 默认值 |
|---|---|---|
| WESQL_CLUSTER_MEMBER_UUID | 集群成员UUID | - |
| WESQL_CLUSTER_MEMBER | 集群成员信息,格式:$host1:$raft_port1 | - |
| WESQL_DATA_VOLUME | 数据存储目录,数据文件位于其子目录data | /data/mysql |
| WESQL_LOG_DIR | 日志存储目录 | /data/mysql/log |
| WESQL_LOGGER_MODE | 是否为Logger节点(0:数据节点,1:Logger节点) | 0 |
| WESQL_LOG_SIZE_THRESHOLD | 数据库后台日志总大小阈值,超过后自动清理 | - |
| MYSQL_DATABASE | 初始化数据库名称(可选) | - |
| MYSQL_USER/MYSQL_PASSWORD | 初始化数据库用户及密码(可选) | - |
| MYSQL_ROOT_HOST | root用户访问范围 | % |
| MYSQL_ROOT_PASSWORD | root用户初始密码(必填,除非启用MYSQL_ALLOW_EMPTY_PASSWORD) | - |
| MYSQL_ALLOW_EMPTY_PASSWORD | 是否允许空root密码(MYSQL_ROOT_PASSWORD未设置时需启用) | - |
| MYSQL_CUSTOM_CONFIG | 额外MySQL配置参数,详情参见官方文档 | - |
用于配置S3及兼容存储连接信息,若与MYSQL_CUSTOM_CONFIG中参数冲突,环境变量优先级更高:
| 变量名 | 说明 | 对应配置参数 |
|---|---|---|
| WESQL_OBJECTSTORE_ACCESS_KEY | 对象存储访问密钥(AK) | - |
| WESQL_OBJECTSTORE_SECRET_KEY | 对象存储密钥(SK) | - |
| WESQL_OBJECTSTORE_PROVIDER | 对象存储提供商(如s3、minio等) | objectstore_provider |
| WESQL_OBJECTSTORE_REGION | 对象存储区域 | objectstore_region |
| WESQL_OBJECTSTORE_ENDPOINT | 对象存储服务端点URL | objectstore_endpoint |
| WESQL_OBJECTSTORE_BUCKET | 存储数据的桶名称 | objectstore_bucket |
| WESQL_OBJECTSTORE_REPO_ID | 数据仓库ID | objectstore_repo_id |
| WESQL_OBJECTSTORE_BRANCH_ID | 分支ID(用于Branching功能) | objectstore_branch_id |
bashdocker run -d \ --name wesql-node \ -p 3306:3306 \ -e WESQL_CLUSTER_MEMBER_UUID="node1-uuid" \ -e WESQL_OBJECTSTORE_ACCESS_KEY="your-s3-ak" \ -e WESQL_OBJECTSTORE_SECRET_KEY="your-s3-sk" \ -e WESQL_OBJECTSTORE_PROVIDER="s3" \ -e WESQL_OBJECTSTORE_REGION="us-west-2" \ -e WESQL_OBJECTSTORE_ENDPOINT="[***]" \ -e WESQL_OBJECTSTORE_BUCKET="wesql-data-bucket" \ -e MYSQL_ROOT_PASSWORD="SecureRootPass123" \ wesql/wesql:latest
bash# 节点1(数据节点) docker run -d \ --name wesql-node1 \ -p 3306:3306 \ -e WESQL_CLUSTER_MEMBER_UUID="node1-uuid" \ -e WESQL_CLUSTER_MEMBER="node1-ip:4444,node2-ip:4444,node3-ip:4444" \ -e WESQL_OBJECTSTORE_ACCESS_KEY="your-s3-ak" \ -e WESQL_OBJECTSTORE_SECRET_KEY="your-s3-sk" \ -e WESQL_OBJECTSTORE_BUCKET="wesql-data-bucket" \ -e MYSQL_ROOT_PASSWORD="SecureRootPass123" \ wesql/wesql:latest # 节点2(数据节点) docker run -d \ --name wesql-node2 \ -p 3306:3306 \ -e WESQL_CLUSTER_MEMBER_UUID="node2-uuid" \ -e WESQL_CLUSTER_MEMBER="node1-ip:4444,node2-ip:4444,node3-ip:4444" \ -e WESQL_OBJECTSTORE_ACCESS_KEY="your-s3-ak" \ -e WESQL_OBJECTSTORE_SECRET_KEY="your-s3-sk" \ -e WESQL_OBJECTSTORE_BUCKET="wesql-data-bucket" \ -e MYSQL_ROOT_PASSWORD="SecureRootPass123" \ wesql/wesql:latest # 节点3(Logger节点) docker run -d \ --name wesql-logger \ -e WESQL_CLUSTER_MEMBER_UUID="logger-uuid" \ -e WESQL_CLUSTER_MEMBER="node1-ip:4444,node2-ip:4444,node3-ip:4444" \ -e WESQL_LOGGER_MODE=1 \ -e WESQL_OBJECTSTORE_ACCESS_KEY="your-s3-ak" \ -e WESQL_OBJECTSTORE_SECRET_KEY="your-s3-sk" \ -e WESQL_OBJECTSTORE_BUCKET="wesql-data-bucket" \ wesql/wesql:latest
更多详细配置与使用说明,请参考WeSQL官方文档。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
MacOS OrbStack 容器配置
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务