Skip to main content
[ PIER ]

MySQL

世界上部署最广泛的关系型数据库。

Database 支持集群 #sql#relational

MySQL 是一个成熟、快速、经过实战检验的 SQL 数据库,驱动 WordPress、Joomla、Drupal、Magento 以及无数 LAMP 栈应用程序。Pier 部署官方 Docker 镜像,提供自动备份、按数据库管理,以及通过 InnoDB Cluster 镜像的一键副本。

使用 Pier 部署

  1. 1 打开 Pier 控制台,点击 Add service。
  2. 2 从模板列表中选择 MySQL。
  3. 3 选择版本、设置服务名称,Pier 会自动配置容器、存储和端口。
  4. 4 如需 HTTPS,请绑定域名。Traefik 会自动签发 Let's Encrypt 证书。

什么是 MySQL?

MySQL 是历史上部署最广的关系型数据库。WordPress 运行在它上面。大约一半的 顶级百万网站也是。最初于 1995 年在瑞典构建,2008 年被 Sun 收购,2010 年被 Oracle 收购,MySQL 现在已发布 9.x 版本并持续开发。

对于大多数 LAMP 栈和 PHP 应用,MySQL 是阻力最小的路径 — 每个主机、每个 框架、每个 CMS 都期望它。在 PostgreSQL 凭借高级特性胜出之处,MySQL 凭借 普及度和运维熟悉度取胜。

Pier 如何部署它

Pier 使用官方 mysql Docker 镜像,将 /var/lib/mysql 挂载为数据卷。默认 为 latest(当前 MySQL 9.x);8-oracle8.0 构建可用于严格的 8.x 部署。集群模式下,Pier 切换到 bitnami/mysql 镜像,开箱即用支持主-副本 复制(总共 2 到 5 节点)。

Pier 在创建时生成强 root 密码,内部暴露 3306,并(可选)通过 Traefik 发布。 备份按计划运行 mysqldump --single-transaction,可推送到任何 S3 兼容存储。

何时不要使用 MySQL

对于嵌入式应用 — SQLite 更简单。对于复杂类型和 SQL 标准合规 — PostgreSQL 更强。对于纯键值或缓存工作负载 — Redis。当你需要熟悉、支持良好的关系 数据库且没有特殊模式需求时,MySQL 是正确答案。

核心功能

InnoDB 事务引擎

行级锁定、MVCC、外键、崩溃恢复。可与传统 MyISAM 引擎热切换以处理只读数据集。

开箱即用的复制

通过 binlog 实现主/副本、半同步、组复制和多源复制。集群模式中使用的 bitnami/mysql 镜像自动处理拓扑。

窗口函数与 CTE(8.0+)

完整的 SQL-99 窗口函数、递归 CTE、JSON 函数和 EXPLAIN ANALYZE。8.x 系列填补了与 PostgreSQL 的大部分差距。

生态与工具

每个主机栈都附带 MySQL 客户端 — phpMyAdmin、DBeaver、MySQL Workbench、JetBrains DataGrip、每个备份工具、每个 ORM。比任何其他数据库更容易招聘。

JSON 支持

原生 JSON 列类型,支持路径表达式、在虚拟生成列上索引、JSON_TABLE() 将文档投影为关系行。

Performance Schema

内置仪表化 — 慢查询日志、EXPLAIN ANALYZE、sys schema 视图、performance_schema 表。无需外部分析器即可调优。

应用场景

WordPress 与 PHP 应用程序

WordPress、WooCommerce、Magento、Drupal、Joomla、MediaWiki、phpBB 的默认后端。每个 PHP 框架默认使用 MySQL。

通用 Web 应用后端

Rails、Django、Laravel、Symfony、Express — 每个 Web 框架都一流支持 MySQL。

多租户 SaaS

每个租户一个数据库或每个租户一个行键列。结合只读副本进行分析卸载。

仪表板的 BI 源

Metabase、Superset、Grafana、Looker — 每个 BI 工具都有原生 MySQL 连接器。

遗留迁移目标

从较旧的 Oracle/SQL Server 系统移植时,MySQL 是兼容性最强的 OSS 落地平台,得益于成熟的 ANSI/ISO SQL 支持。

代码示例

创建 InnoDB + UTF-8 表 sql
CREATE TABLE posts (
  id        BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  slug      VARCHAR(200) NOT NULL UNIQUE,
  title     VARCHAR(255) NOT NULL,
  body      MEDIUMTEXT,
  meta      JSON,
  created   DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
  KEY idx_created (created)
) ENGINE=InnoDB
  DEFAULT CHARSET=utf8mb4
  COLLATE=utf8mb4_unicode_ci;
查询 JSON 列 sql
SELECT id, title,
       JSON_EXTRACT(meta, '$.tags') AS tags,
       JSON_UNQUOTE(JSON_EXTRACT(meta, '$.author')) AS author
FROM posts
WHERE JSON_CONTAINS(meta, '"featured"', '$.flags');
窗口函数(累计总和) sql
SELECT id, amount,
       SUM(amount) OVER (
         PARTITION BY customer_id
         ORDER BY created
       ) AS running_total
FROM invoices;
使用 mysqldump 备份 bash
# Pier 按计划自动运行 — 也可用于一次性:
docker exec -i pier-mysql \
  mysqldump -u root -p"$MYSQL_ROOT_PASSWORD" \
            --single-transaction --routines --triggers appdb \
  | gzip > appdb-$(date +%F).sql.gz

对比

vs PostgreSQL Postgres 具有更丰富的类型系统(JSONB、数组、范围)、更严格的 SQL 标准合规和更高级的索引。MySQL 在简单的读密集型 WordPress 风格工作负载上更快,托管生态更广。
vs MariaDB MariaDB 是 MySQL 的社区分支,通过 5.x 二进制兼容,之后特性分化(Galera 集群、ColumnStore 引擎)。如果想要完全开放治理的分支选 MariaDB;如果想要 Oracle 官方发布选 MySQL。
vs SQLite SQLite 在嵌入式单进程应用中无可匹敌。MySQL 接管你需要并发写入器、网络访问、复制或大于 RAM 数据的场景。
vs 云托管 MySQL(RDS、Cloud SQL) 在 Pier 上自托管对中小工作负载便宜 10–30 倍。你失去了托管 UI,但获得控制权、对自己 S3 的备份和完整的版本灵活性。

常见问题

Pier 部署哪个 MySQL 版本?
默认 `latest`(当前 MySQL 9.x)。8-oracle 和 8.0 构建也可用。在生产中固定主版本,避免未来镜像更新跨发布线升级。
可以运行副本吗?
是 — MySQL 模板支持 2 到 5 节点集群(1 主 + N 只读副本),通过 bitnami/mysql 镜像的 InnoDB 主-副本复制。
自动备份如何工作?
Pier 按计划运行 `mysqldump --single-transaction`、gzip,并(可选)上传到 S3。按数据库和集群级备份可配置。
默认端口和连接字符串?
3306/tcp。Pier 在服务详情页上暴露 `mysql://root:password@host:3306/db`;root 密码自动生成。
可以使用 phpMyAdmin 或 DBeaver 连接吗?
是的,任何 MySQL 客户端都可以。通过 Traefik 暴露端口(谨慎 — 数据库不应面向公网),或通过 SSH 隧道进行管理访问。
可以从 MariaDB 迁移到 MySQL 或反之吗?
通过 MySQL 5.x 它们近乎无缝。从 MySQL 8+ 到 MariaDB 10+ 需要更多注意 — 转储为 SQL,在另一端恢复,审计任何特定于存储引擎的功能。
如何调优 InnoDB 缓冲池?
通过自定义 my.cnf 或环境覆盖将 `innodb_buffer_pool_size` 设置为容器内存的 50–70%。Pier 目前不直接暴露此项 — 使用配置文件挂载。

相关服务

在你的 VPS 上部署

MySQL 是一个成熟、快速、经过实战检验的 SQL 数据库,驱动 WordPress、Joomla、Drupal、Magento 以及无数 LAMP 栈应用程序。Pier 部署官方 Docker 镜像,提供自动备份、按数据库管理,以及通过 InnoDB Cluster 镜像的一键副本。

部署此服务 →