我的知识记录

MySQL数据库主从复制配置:读写分离实现步骤_MySQL_MariaDB_数据库运维

服务器迁移或者版本升级后,数据库容易出问题。这时候不能凭感觉改配置,需要按顺序排查。整理一份排查清单,从最常见的原因开始,逐步缩小范围。

数据库性能下降会导致整个站点变慢。查询超时、页面加载卡顿、并发稍高就502,这些都可能是数据库瓶颈。慢查询、缺索引、表锁、连接数配置不合理是常见原因。

实际操作分几个阶段,逐个说明。

数据库连接超时先看wait_timeout参数。show variables like 'wait_timeout',默认8小时,连接闲置超过这个时间会被断开。PHP长连接或者连接池配置不当会用到已断开的连接,报MySQL server has gone away。调大wait_timeout或者用连接池检测。

连接数满了报Too many connections。show variables like 'max_connections'看上限,show processlist看当前连接。临时解决是kill空闲连接,长期解决是调大max_connections或者优化程序释放连接。连接数不是越大越好,要根据服务器内存调整。

表损坏用CHECK TABLE和REPAIR TABLE。MyISAM引擎容易损坏,InnoDB一般不会。myisamchk命令行修复更快,myisamchk -r tablename.MYI。修复前先备份表文件,修复失败还能恢复。频繁损坏说明磁盘有问题或者服务器异常断电。

字符集乱码统一用utf8mb4。创建数据库指定DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,表和字段也用utf8mb4。PHP连接后执行SET NAMES utf8mb4。已经是gbk的数据要先导出转码再导入,直接改字符集会乱码。

几个容易踩坑的地方提前说一下。

CDN环境下改配置注意缓存。改了文件要刷新CDN缓存,否则用户看到旧内容。HTTPS证书要在CDN和源站都装,回源协议要对应。获取真实IP要配置real_ip,否则IP限制和日志都不准。

数据库操作前确认WHERE条件。UPDATE和DELETE没有WHERE会影响全表,数据全改或者全删。先SELECT确认影响范围,加LIMIT限制条数,在测试环境验证SQL。执行完再SELECT确认结果,不对的话从备份恢复。

SSL证书快到期前续期。Let's Encrypt 90天有效期,配置自动续期但要定期检查是否成功。付费证书1年有效期,到期前1个月申请新证书更换。证书过期浏览器提示不安全,用户看到警告就会离开,影响流量和转化。

不要直接在生产环境试错。有条件搭测试环境,先验证操作步骤和配置效果,没问题再上生产。测试环境和生产环境配置尽量一致,PHP版本、数据库版本、服务器类型都要对应,避免测试通过生产出问题。

还有几个相关问题顺便提一下。

问:虚拟主机没有服务器权限怎么操作?答:虚拟主机用主机面板提供的功能,文件管理器改文件,phpMyAdmin管数据库,伪静态和SSL在面板设置。大部分网站操作不需要命令行权限,只有服务器级别的配置(改PHP全局配置、装扩展)需要主机商协助。

问:Linux命令记不住怎么办?答:常用命令就那十几个,man命令看手册,--help看参数。历史记录用方向键翻,history看所有执行过的命令。复杂操作写脚本,下次直接运行脚本不用记命令。运维文档记录常用操作步骤,照着做就行。

运维经验就是踩坑踩出来的。这个问题第一次处理可能要花半天,照着指南做半小时能搞定。处理完把自己的操作过程记下来,补充到运维手册里,下次更快。团队共享手册,新人也能快速上手。

MySQL数据库主从复制配置:读写分离实现步骤_MySQL_MariaDB_数据库运维

标签:

更新时间:2026-08-27 13:04:19

上一篇:IIS10脚本映射方式ASP.NET伪静态设置_IIS脚本映射伪静态教程详解

下一篇:虚拟主机文件操作_FTP 连接与上传常见问题