MariaDB
社区开发的 MySQL 分支 — 开放治理、直接兼容。
MariaDB 是由 MySQL 原作者在 Oracle 收购后创建的、社区开发的完全开源的 MySQL 分支。它与 MySQL 5.x 二进制兼容,对大多数 MySQL 8.0 工作负载保持直接替换,并具有额外的存储引擎(ColumnStore、Aria)、Galera 集群和更强的 OSS 保障。
使用 Pier 部署
- 1 打开 Pier 控制台,点击 Add service。
- 2 从模板列表中选择 MariaDB。
- 3 选择版本、设置服务名称,Pier 会自动配置容器、存储和端口。
- 4 如需 HTTPS,请绑定域名。Traefik 会自动签发 Let's Encrypt 证书。
什么是 MariaDB?
MariaDB 始于 2009 年,由 Monty Widenius(MySQL 原作者)和核心 MySQL 开发者 在 Oracle 收购后立即创建为 MySQL 的社区分支。目标:在独立基金会下保持 MySQL 完全开源,免受企业许可证变化的影响。
15 年间,它已分化到拥有自己的个性(Galera 多主、Aria + ColumnStore 引擎、 JSON 路径),同时在有线和协议级别保持 MySQL 兼容。维基百科、Google、 Mozilla、RedHat、SUSE、Booking.com 以及许多企业发行版都将 MariaDB 作为 默认的”MySQL 兼容”数据库。
Pier 如何部署它
Pier 使用官方 mariadb Docker 镜像,将 /var/lib/mysql 挂载为数据卷。默认
版本为 latest(当前 MariaDB 11.x);10.11(LTS)和 10.6 可用。集群模式
(2–5 节点)使用 bitnami/mariadb 镜像和 Galera 复制。
Pier 通过 MARIADB_ROOT_PASSWORD 自动生成强 root 密码,内部暴露 3306。备份
按计划运行 mariadb-dump --single-transaction。
何时不要使用 MariaDB
对于嵌入式应用 — SQLite。对于 Postgres 强类型系统和 SQL 标准合规 — PostgreSQL。对于纯缓存 — Redis。对于 PB 级纯分析 — ClickHouse。当你想要 一个熟悉的 MySQL 兼容数据库,具有更强的 OSS 保障和可用的 Galera 时, MariaDB 取胜。
核心功能
MySQL 兼容
相同的有线协议、相同的 SQL 方言、相同的客户端工具。大多数 ORM、框架和转储实用程序无需更改即可工作。从 MySQL 轻松迁移。
Galera 集群(多主)
通过 Galera 实现同步多主复制。写入任何节点;所有节点保持一致。MariaDB 内置;MySQL 需要单独的包。
Aria 与 ColumnStore 引擎
Aria — MyISAM 的崩溃安全替代品。ColumnStore — 同一数据库上用于分析的列式引擎,无需单独的 OLAP 系统。
窗口函数、CTE、JSON
与 MySQL 8 相同的现代 SQL 功能 — 递归 CTE、窗口函数、JSON 路径、生成列、序列。
开放治理
由 MariaDB 基金会(非营利)开发,而非 Oracle。许可证为 GPLv2;客户端为 LGPL。无源代码可见许可证变更的风险。
大规模生产验证
维基百科、Google、Mozilla、Booking.com、ServiceNow — 许多前 MySQL 部署迁移到 MariaDB 并留下了。
应用场景
MySQL 直接替代品
通过更改一个 Docker 镜像从 MySQL 迁移 — 大多数应用程序察觉不到。免费获得额外的存储引擎和 Galera。
用于高可用的多主集群
Galera 集群提供同步多主写入,无单点故障 — 写入任何节点,从任何节点读取。
一个引擎中的 OLTP + OLAP
ColumnStore 引擎为同一 MariaDB 添加列式分析表。在分析表上运行仪表板,在 InnoDB 上运行 OLTP。
PHP 应用后端
维基百科多年前迁移到 MariaDB;许多 WordPress 主机现在默认使用 MariaDB。与 PHP MySQL 扩展和 WordPress 完全兼容。
严格 OSS 合规环境
政府、欧盟公共部门、需要开放治理的受监管行业 — MariaDB 基金会提供 MySQL/Oracle 无法提供的法律确定性。
代码示例
CREATE TABLE customers (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(255) NOT NULL UNIQUE,
plan ENUM('free', 'pro', 'team') DEFAULT 'free',
meta JSON,
created DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; WITH RECURSIVE org_tree AS (
SELECT id, name, manager_id, 1 AS depth
FROM employees WHERE manager_id IS NULL
UNION ALL
SELECT e.id, e.name, e.manager_id, t.depth + 1
FROM employees e JOIN org_tree t ON e.manager_id = t.id
)
SELECT * FROM org_tree ORDER BY depth, name; SELECT product_id, region, sales,
RANK() OVER (PARTITION BY region ORDER BY sales DESC) AS rank
FROM sales_by_region; docker exec -i pier-mariadb \
mariadb-dump -u root -p"$MARIADB_ROOT_PASSWORD" \
--single-transaction --routines --triggers appdb \
| gzip > appdb-$(date +%F).sql.gz 对比
| vs MySQL | 通过 5.x 它们二进制兼容。MariaDB 10+ vs MySQL 8+ 已分化 — MariaDB 添加了 Galera 和更多存储引擎;MySQL 添加了一些优化器改进。两者都很优秀。 |
| vs PostgreSQL | Postgres 具有更丰富的类型系统和更严格的 SQL 合规;MariaDB 在 PHP/WordPress 生态中部署更广,对 MySQL 老兵的复制更容易。 |
| vs SQLite | SQLite 用于嵌入式单写入器应用。MariaDB 用于网络化多写入器。 |
| vs Galera 集群 vs MySQL InnoDB Cluster | Galera 是同步多主(任何地方写入)。InnoDB Cluster 是带显式主故障切换的异步。如果想要任何地方写入选 Galera;如果偏好 MySQL 官方路径选 InnoDB Cluster。 |
常见问题
Pier 部署哪个版本?
我可以无缝用 MariaDB 替换 MySQL 吗?
支持集群模式吗?
数据文件格式与 MySQL 兼容吗?
默认端口和连接?
许可证情况如何?
新项目应该选 MySQL 还是 MariaDB?
相关服务
在你的 VPS 上部署
MariaDB 是由 MySQL 原作者在 Oracle 收购后创建的、社区开发的完全开源的 MySQL 分支。它与 MySQL 5.x 二进制兼容,对大多数 MySQL 8.0 工作负载保持直接替换,并具有额外的存储引擎(ColumnStore、Aria)、Galera 集群和更强的 OSS 保障。
部署此服务 →