2.1 MySQL 管理与调优

一句话判断

MySQL 是 1Panel 管理得最完整的数据库:远程实例、Web 管理、性能调整、慢日志、当前状态全都有。调优的入口是“当前状态”看指标、“性能调整”改参数,而不是凭感觉背网上的配置。

实例管理:先理清三个概念

打开数据库 → MySQL,列表上方有几个关键按钮,进阶用户必须分清:

概念 是什么 怎么操作
数据库实例 一个跑着的 MySQL 服务(应用商店装的或远程的) 上方下拉菜单切换
数据库 实例里的一个库 列表里创建、删除
远程服务器 别的机器上已存在的 MySQL 【远程服务器】按钮添加

应用商店装的 MySQL 会自动出现在实例列表里,远程的库要手动添加。切换实例用上方的下拉菜单——这是多实例环境下的高频操作。

一个真实场景:你在阿里云买了 RDS,同时在 1Panel 本机装了个 MySQL 做开发。把 RDS 加进远程服务器列表,用下拉菜单切换,两套库在一个界面里管。应用连哪个库,由连接信息决定,不由面板决定。

创建数据库:三个参数要想清楚

创建库的参数不多,但三个容易随手填错:

参数 默认 建议
编码格式 UTF-8 保持默认,除非有历史库要求
密码 随机密码 用随机密码,别设 123456
访问权限 本地服务器 生产环境保持默认

编码格式有个经典大坑:如果一个老库是 latin1,你新建成 UTF-8 再导入数据,中文会乱码。导入老数据前,先确认原库的编码。

连接信息:不要背 127.0.0.1

点【连接信息】可以看到地址、端口和 root 密码,还能在这改 root 密码。

官方的提醒必须再强调一遍:

应用商店部署的数据库采用容器化方式运行,不同的场景需要根据页面提示选择对应的连接信息。

什么意思?同一个数据库,“在容器里的应用连”和“在宿主机上连”和“从外部连”,用的地址可能不一样。 你在 1Panel 上装了个 WordPress,它连数据库用的是容器内地址;你在本机用 Navicat 连,用的是 127.0.0.1 + 映射端口。

所以:每次要连数据库,先点【连接信息】看一眼,别凭记忆填。

从服务器同步:一个被忽略的实用按钮

官方定义:

当使用了其他数据库工具或应用程序操作了数据库,数据库列表信息与实际不一致时,可以点击【从服务器同步】按钮,主动从数据库查询当前数据库列表。

什么时候会“不一致”?

  • 用 phpMyAdmin 或命令行直接 CREATE DATABASE 建了库,面板列表没出现;
  • 程序自动建了库;
  • 别的管理员在别处删了库。

记住这个按钮的位置:列表上方。列表“看起来不对”的时候,先点它同步,别急着以为是面板坏了。

备份与恢复:格式是硬约束

MySQL 备份的官方说明:

  • 默认备份路径 /opt/1panel/backup/database/mysql;
  • 备份方式是 mysqldump。

恢复(导入备份)有两个来源:本地上传、选择已备份的文件。三个硬性要求:

要求 不满足会怎样
上传的压缩包内必须存在 test.sql 文件 无法正确导入
SQL 文件必须符合标准格式 导入失败
—— phpMyAdmin 导出的 SQL 可能缺版本/编码信息

第三条是最常踩的:你用别的 phpMyAdmin 导出了一份 SQL,拿到 1Panel 里导不进去,报错可能就是缺了头部信息。

官方给的解决办法很直接:若无法正常导入,可以尝试使用 phpMyAdmin 导入。

实战建议:跨工具迁移数据库时,用 mysqldump 命令导出标准格式,或者干脆全程用 1Panel 的备份/导入,别混用工具。备份文件命名带日期版本号,否则覆盖了就找不回来。

权限设置:两道门都要锁

操作列的【权限】可以改单个库的访问权限:所有人、指定 IP。

场景 怎么配
只给本机应用用 本地服务器(默认)
给另一台服务器的应用用 指定 IP,填对方 IP,逗号分隔
对外提供服务(如给客户的数据服务) 指定 IP + 防火墙放行 3306

关键认知:权限是数据库层的门,防火墙是系统层的门。开了“指定 IP”但防火墙没放行,连不上;开了“所有人”,等于两道门全敞开。

1Panel 自己有防火墙模块(系统 → 防火墙),云服务器还有云安全组。生产环境放行数据库端口前,先确认来源 IP 范围。

数据库配置:改配置的完整姿势

点状态栏的设置按钮进入数据库设置,有六个标签:配置修改、当前状态、性能调整、端口、日志、慢日志。

配置文件路径:/opt/1panel/apps/mysql/[数据库名称]/conf/my.cnf

官方的警告:

错误的数据库配置将导致 MySQL 服务不可用,请谨慎修改。如数据库配置不正确导致服务无法正常启动,可尝试恢复默认配置后保存。

安全的修改流程:

  1. 先看当前状态,记住现在的指标基线;
  2. 一次只改一个参数;
  3. 改完让 MySQL 重载/重启,确认服务真的起来了;
  4. 跑一遍业务,对比新指标。

如果起不来:用【恢复默认配置】救回来。所以第 1 步的基线很重要——救回来之后你还得重新调。

当前状态:调优的起点

官方的说法:

当数据库查询缓慢时,可在数据库设置界面,点击当前状态按钮,查看当前数据库包括缓存命中数、索引命中数等各个常用指标的状态,通过这些状态对数据库进行性能优化。

为什么从“当前状态”开始? 因为它回答的是“哪里慢”,而不是“改哪里”。这是正确顺序:先诊断,再开药。

几个值得重点看的指标方向:

指标方向 反映什么 什么动作
缓存命中数 查询是不是走缓存 命中率低 → 查 query_cache 或看是不是被禁用了
索引命中数 查询有没有用索引 命中率低 → 业务表缺索引,去看慢日志
连接数 并发压力 高 → 调 max_connections,但要算内存

真实路径:查询慢 → 看当前状态(索引命中率低)→ 翻慢日志找到具体 SQL → 给业务表加索引 → 再看当前状态确认改善。这是一条闭环,缺任何一步都是瞎调。

性能调整:表单 + 预设方案

官方说明:

系统支持表单方式直接调整数据库性能相关参数名,如索引缓冲区、连接数等,并且预设常用的优化方案,用户可根据系统环境,直接选择优化方案。

预设优化方案是给不想深入研究的人准备的——根据系统环境选一个方案就行。但进阶用户要知道它的局限:预设方案不知道你的业务。它是通用解,不是最优解。

自己调三个核心参数的思路:

参数 按什么调 小机器的坑
innodb_buffer_pool_size 给可用内存的 50%~70% 设超了直接起不来
max_connections 按并发量,别盲目调高 每个连接都占内存,算总账
key_buffer_size(MyISAM) 用 MyISAM 才重要 现在多为 InnoDB,保持默认

一条算账公式:每个连接约需 1~2MB 内存,max_connections × 2MB 加上 buffer pool,别超过机器总内存的 80%。

慢日志:找出真正的元凶

MySQL 的设置界面支持查看慢日志——这是 1Panel 数据库功能里被严重低估的一个。

慢日志记录的是执行时间超过阈值的 SQL。网站慢,80% 的锅在慢 SQL,而慢日志就是案发现场。

使用路径:数据库设置 → 慢日志。看到慢 SQL 后:

  1. 看它查哪张表;
  2. EXPLAIN 一下执行计划;
  3. 缺索引加索引,SQL 写得差改 SQL。

注意:慢日志的生效依赖 MySQL 开启了慢日志记录(slow_query_log)。如果发现慢日志页面空的,先确认配置里开了这个。

日志:容器日志,不是系统日志

官方明确:此处产生的日志是对应 MySQL 容器产生的日志,支持时间段筛选、追踪和下载。

排查启动失败:配置改完 MySQL 起不来,来这看容器日志,通常有直接的报错(比如 InnoDB: mmap(...) failed 就是内存不够)。

日常追踪:开实时追踪,同时复现问题,日志直接怼到眼前。

端口:改了别忘了两处

设置界面可以直接改端口。但记住:改端口 = 数据库层改了 + 防火墙层没改。

改端口的完整动作:

  1. 设置界面改端口;
  2. 防火墙/云安全组放行新端口;
  3. 旧端口的放行规则要删掉(不然白改);
  4. 通知所有连接这个库的应用改配置。

改端口的动机通常是安全(躲避针对 3306 的扫描)。如果改完旧规则不删,扫描器还是能从旧端口进——安全动作做一半,等于没做。

修改密码:分清两种密码

入口 改的是什么
【连接信息】里的修改 root 密码(管理员密码)
列表里的【修改密码】 当前库的绑定账号密码(非 root)

这两个不是一回事。 应用配置里写的通常是库账号密码,不是 root 密码。改错了应用连不上。

改密码后必须同步更新应用的配置(比如 WordPress 的 wp-config.php),然后重启应用。否则就是“改了密码、网站挂了”的经典事故。

本节要点

  • 连数据库先看【连接信息】,别背 127.0.0.1;
  • 列表不对先点【从服务器同步】;
  • 备份导入要求压缩包里有 test.sql,phpMyAdmin 导出的 SQL 可能格式不全;
  • 调优闭环:当前状态诊断 → 慢日志定位 → 加索引/改 SQL → 再看状态确认;
  • innodb_buffer_pool_size 别超机器内存,否则 MySQL 起不来;
  • 改密码后必须同步更新应用配置。

延伸阅读:MySQL 的创建、权限与性能参数说明,可对照 《1Panel 官方文档:功能手册》 的数据库章节。

下一节:MySQL 之外,PostgreSQL、Redis、MongoDB 的运维要点——尤其 Redis 的持久化,是另一种完全不同的思维方式。