MySQL DBA需要掌握的 7 个问题

1、MySQL适用的场景是什么?

数据量建议单实例T级或以内,不依赖存储过程、函数、触发器的传统oltp场景都适用,因为是一个相对轻量级的数据库

灾备使用MySQL各类的高可用方案即可,比如主从、mha、mgr等。

2、MySQL巡检应该怎么做?优先关注哪些参数?

可以从以下几个方面去做:

  • 服务器配置
  • 操作系统配置及重要参数
  • MySQL层配置及重要参数
  • MySQL对象
  • MySQL运行时的重要状态(日志、锁)

3、MySQL如何排查CPU占用高的问题?

重点是关于通过哪些系统表或者常用的sql来确定导致问题的sql?

方案一、通过pidstat命令定位

首先我们先找到mysqld进程的PID,然后执行pidstat -t -p $PID,结果如下图:

进入mysql交互命令,通过以下命令查询具体SQL。

复制代码
select * from performance_schema.threads where thread_os_id = '1';

定位到了具体定位sql接下来就可以分析优化了。

方案二、通过TOP命令定位

  • 首先执行TOP命令,输入H,可以按照显示线程状态。
  • 输入P,可以按照cpu的使用时间份额进行排序,这时候我们就可以看下是否有超过70%-90%以上的线程了。

登录mysql,执行以下命令

复制代码
select * from performance_schema.threads where THREAD_OS_ID=4461 \G

4、MySQL数据库内存使用率高,应该如何进行排查?

Mysql Server Memory Usage= Sum of Global Buffers + (number of Connection * Per thread memory variables)

单个mysql连接线程的内存消耗统计,这里只是统计分配值(具体驻留内存占用值统计不到)

复制代码
SELECT b.thd_id, b.user, current_count_used, current_allocated, current_avg_alloc  , current_max_alloc, total_allocated, current_statementFROM memory_by_thread_by_current_bytes a, session bWHERE a.thread_id = b.thd_idLIMIT 1;

统计 top 10 的buffer pool占用内存的表

复制代码
SELECT * FROM innodb_buffer_stats_by_table ORDER BY pages DESCLIMIT 10;

5、MySQL数据库磁盘IO使用高,请问如何进行排查?

mysql5.7版本为例,结合performance_schema来查看MySQL数据库的各种指标。相当于Oracle数据库中的各种性能视图,可以查看几乎所有的数据库状态。

IO的话,可以查看这张表:

performance_schema.file_instances:列出了文件I / O操作及其相关文件的工具实例

排查思路:

1、慢SQL排除

2、硬件问题-RAID降级,磁盘故障等排除

2、innodb_log、innodb_buffer_pool_wait相关配置和等待

3、IO相关参数配置

innodb_flush_method = O_DIRECT

innodb_file_per_table = 1

innodb_doublewrite = 1

delay_key_write

innodb_read_io_threads

innodb_read_io_threads

innodb_io_capacity

innodb_flush_neighbors

sync_binlog

对比历史性能记录,结合业务以及负载来分析。

6、 有哪些工具可以帮助优化MySQL的?

以下工具可以参考:

pt-mysql-summary

pt-variable-advisor

pt-duplicate-key-checker

pt-deadlock-logger

或者

tuning-primer.sh

https://github.com/major/MySQLTuner-perl

7、目前主流的MySQL高可用采用哪种方式,MHA还是MGR?

由于MGR技术相对较新,目前使用MHA更多。但个人认为,MGR或者基于此的innodb cluster架构(或替代方案)会成为未来主流。

MHA:

优点:成熟稳定,自动切换主从,主节点宕机后尽可能少丢失数据(自动抓取未复制的binlog)。

缺点:管理节点单点、可能脑裂、可能有不必要切换、还是有丢数据风险、组件多维护相对麻烦

MGR:

优点:基于paxos的高可用架构,支持多主(不建议),强一致

缺点:需要innodb引擎(丢业务有改造代价),应用端没有自动切换(可以通过中间件解决),技术太新可能有未知bug。

相关推荐
程序员卷卷狗3 分钟前
Redis事务与MySQL事务有什么区别?一文分清
数据库·redis·mysql
玩大数据的龙威30 分钟前
农经权二轮延包—数据(新老农经权)比对软件更新
数据库·arcgis
保持低旋律节奏41 分钟前
网络系统管理——期末复习
数据库
程序员佳佳1 小时前
2025年大模型终极横评:GPT-5.2、Banana Pro与DeepSeek V3.2实战硬核比拼(附统一接入方案)
服务器·数据库·人工智能·python·gpt·api
qq_12498707532 小时前
重庆三峡学院图书资料管理系统设计与实现(源码+论文+部署+安装)
java·spring boot·后端·mysql·spring·毕业设计
大学生资源网2 小时前
java毕业设计之“知语”花卉销售网站的设计与实现源码(源代码+文档)
java·mysql·毕业设计·源码·springboot
roo_12 小时前
github 获取构造图数据库的LNB数据集和使用说明
数据库
罗汉松驻扎的工作基地3 小时前
sql server 2014 下载和安装
数据库
<花开花落>4 小时前
Cursor 的 MCP 应用:mysql-mcp-server
mysql·cursor·mcp
l1t4 小时前
用docker安装oracle 19c
运维·数据库·docker·oracle·容器