MySQL
世界上部署最广泛的关系型数据库。
MySQL 是一个成熟、快速、经过实战检验的 SQL 数据库,驱动 WordPress、Joomla、Drupal、Magento 以及无数 LAMP 栈应用程序。Pier 部署官方 Docker 镜像,提供自动备份、按数据库管理,以及通过 InnoDB Cluster 镜像的一键副本。
使用 Pier 部署
- 1 打开 Pier 控制台,点击 Add service。
- 2 从模板列表中选择 MySQL。
- 3 选择版本、设置服务名称,Pier 会自动配置容器、存储和端口。
- 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-oracle 和 8.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 支持。
代码示例
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; 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'); SELECT id, amount,
SUM(amount) OVER (
PARTITION BY customer_id
ORDER BY created
) AS running_total
FROM invoices; # 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 版本?
可以运行副本吗?
自动备份如何工作?
默认端口和连接字符串?
可以使用 phpMyAdmin 或 DBeaver 连接吗?
可以从 MariaDB 迁移到 MySQL 或反之吗?
如何调优 InnoDB 缓冲池?
相关服务
在你的 VPS 上部署
MySQL 是一个成熟、快速、经过实战检验的 SQL 数据库,驱动 WordPress、Joomla、Drupal、Magento 以及无数 LAMP 栈应用程序。Pier 部署官方 Docker 镜像,提供自动备份、按数据库管理,以及通过 InnoDB Cluster 镜像的一键副本。
部署此服务 →