Skip to main content
[ PIER ]

MariaDB

社区开发的 MySQL 分支 — 开放治理、直接兼容。

Database 支持集群 #sql#relational#mysql-compatible

MariaDB 是由 MySQL 原作者在 Oracle 收购后创建的、社区开发的完全开源的 MySQL 分支。它与 MySQL 5.x 二进制兼容,对大多数 MySQL 8.0 工作负载保持直接替换,并具有额外的存储引擎(ColumnStore、Aria)、Galera 集群和更强的 OSS 保障。

使用 Pier 部署

  1. 1 打开 Pier 控制台,点击 Add service。
  2. 2 从模板列表中选择 MariaDB。
  3. 3 选择版本、设置服务名称,Pier 会自动配置容器、存储和端口。
  4. 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 无法提供的法律确定性。

代码示例

创建 InnoDB 表(MySQL 兼容 DDL) sql
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;
递归 CTE(组织架构遍历) sql
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;
窗口函数(组内排名) sql
SELECT product_id, region, sales,
       RANK() OVER (PARTITION BY region ORDER BY sales DESC) AS rank
FROM sales_by_region;
使用 mariadb-dump 备份 bash
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 部署哪个版本?
默认 `latest`(撰写时为 MariaDB 11.x)。版本 11、10.11(LTS)和 10.6 也在选择器中。在生产中固定主版本。
我可以无缝用 MariaDB 替换 MySQL 吗?
对于 MySQL 5.x — 是的,近乎完美的直接替换。对于 MySQL 8+ — 通常可以,但要审计像默认认证插件(caching_sha2_password vs mysql_native_password)、JSON 路径和特定优化器行为等功能。
支持集群模式吗?
Pier 模板支持通过 bitnami/mariadb 镜像的 2-5 节点集群。Galera Cluster 是底层复制。
数据文件格式与 MySQL 兼容吗?
对于通过 MySQL 5.7 / MariaDB 10.2 的 InnoDB — 是。之后,文件格式可能分化 — 始终通过 mysqldump/mariadb-dump 迁移,而非原始文件复制。
默认端口和连接?
3306/tcp。URI 为 `mysql://root:password@host:3306/db` — MySQL 协议意味着 mysql:// 方案有效。
许可证情况如何?
服务器为 GPLv2(与 MySQL Community 相同)。客户端库为 LGPL(比 MySQL 的 GPL 客户端库更宽松)。两者都是完全开源,无源代码可见组件。
新项目应该选 MySQL 还是 MariaDB?
对于纯 Web/PHP/WordPress — 任一都可。对于 Galera 多主 — MariaDB。对于 Oracle Cloud / 企业支持合同 — MySQL。对于严格 OSS 治理保证 — MariaDB。

相关服务

在你的 VPS 上部署

MariaDB 是由 MySQL 原作者在 Oracle 收购后创建的、社区开发的完全开源的 MySQL 分支。它与 MySQL 5.x 二进制兼容,对大多数 MySQL 8.0 工作负载保持直接替换,并具有额外的存储引擎(ColumnStore、Aria)、Galera 集群和更强的 OSS 保障。

部署此服务 →