MySQL是一个功能强大的关系型数据库,但对于新手来说,在使用初期,可能多多少少会犯一些错。这里就来总结一下新手可能最常犯的错误,有些甚至产生了严重的后果。
错误1:不备份数据
问题:数据丢失的风险极大。
解决方法:定期全备(可参考:Xtrabackup的几种备份和恢复方式)+Binlog备份。
错误2:不加索引
问题:数据量一上来就出现大量慢查询。小编曾经待过的一家公司,某个活动刚上线推广不久,就出现大量响应超时。最后原因竟然是某个条件字段没加索引,最终这个项目的研发和DBA每人罚了两千。公司也损失不少,很多用户看到响应超时,就不再继续参加活动了。
解决方法:适当添加索引以加速查询速度,但是也要避免索引过多,否则会增加写操作的开销。
错误3:不优化查询
问题:性能下降,响应时间变长。
解决方法:学习如何优化SQL,使用EXPLAIN来分析查询执行计划。
错误4:使用弱密码以及不控制权限
问题:导致数据库被攻击勒索,在去年也分享过一个被勒索的案例:MySQL被黑了。
解决方法:设置复杂密码,并增加客户端白名单。
错误5:不监控数据库
问题:无法及时发现和解决性能问题。
解决方法:使用监控工具监控核心指标,可以回顾:Prometheus+Grafana 监控 MySQL。比如查询响应时间、QPS、TPS、CPU和内存、磁盘使用情况。
错误6:不定期清理和优化表
问题:数据库膨胀,性能下降。
解决方法:定期清理不再需要的数据,执行optimize table(会锁表,建议低峰操作)来优化表。
错误7:使用delete一次性清空历史数据
问题:导致大事务、从库延迟。
解决方法:删除部分数据时每次删少量数据,比如1000条,分多次删除,或者使用归档工具pt-archiver;清空整张表用truncate。
错误8:不增加主键
问题:写入数据时,很可能会导致数据页频繁分裂,从而导致写入效率低和页空间浪费。
解决办法:增加自增主键。
错误9:不增加高可用
问题:数据库宿主机一宕机,业务就中断了。
解决办法:增加高可用,常用高可用方案可以查看:MySQL 常用高可用方案。
这篇文章到这里还没结束,希望朋友们在留言区补充,一起来完成创作。
评论区留下你自己或者同事在MySQL上犯过哪些错误?
评论点赞前两名的小伙伴可免费获得小编的书籍
《MySQL DBA精英实战课》
统计截至2023年9月27日20:00
获奖者加下方微信领取书籍





