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 服务不可用,请谨慎修改。如数据库配置不正确导致服务无法正常启动,可尝试恢复默认配置后保存。
安全的修改流程:
- 先看当前状态,记住现在的指标基线;
- 一次只改一个参数;
- 改完让 MySQL 重载/重启,确认服务真的起来了;
- 跑一遍业务,对比新指标。
如果起不来:用【恢复默认配置】救回来。所以第 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 后:
- 看它查哪张表;
EXPLAIN一下执行计划;- 缺索引加索引,SQL 写得差改 SQL。
注意:慢日志的生效依赖 MySQL 开启了慢日志记录(slow_query_log)。如果发现慢日志页面空的,先确认配置里开了这个。
日志:容器日志,不是系统日志
官方明确:此处产生的日志是对应 MySQL 容器产生的日志,支持时间段筛选、追踪和下载。
排查启动失败:配置改完 MySQL 起不来,来这看容器日志,通常有直接的报错(比如 InnoDB: mmap(...) failed 就是内存不够)。
日常追踪:开实时追踪,同时复现问题,日志直接怼到眼前。
端口:改了别忘了两处
设置界面可以直接改端口。但记住:改端口 = 数据库层改了 + 防火墙层没改。
改端口的完整动作:
- 设置界面改端口;
- 防火墙/云安全组放行新端口;
- 旧端口的放行规则要删掉(不然白改);
- 通知所有连接这个库的应用改配置。
改端口的动机通常是安全(躲避针对 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 的持久化,是另一种完全不同的思维方式。
