- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
数据库运维面试题及答案
一、基础操作与监控类
Linux环境下,如何快速查看MySQL的进程状态和占用端口?
答案:
查进程:ps-ef|grepmysql(看是否有mysqld进程,可加-aux看资源占用:ps-aux|grepmysql)
查端口:netstat-tuln|grep3306(3306为默认端口,也可用ss-tuln|grep3306,ss比netstat更高效)
若要实时看资源占用,可用top-p$(pidofmysqld)跟踪MySQL进程的CPU、内存使用。
日常运维中,你会监控数据库的哪些核心指标?用什么工具实现?
答案:
核心指标:
性能:QPS(每秒查询数)、TPS(每秒事务数)、慢查询数量、连接数(showglobalstatuslikeThreads_used)
资源:CPU/内存/磁盘IO占用(避免磁盘满导致写挂)、表空间增长率
健康:主从同步状态(showslavestatus\G看IO/SQL线程是否Yes)、错误日志有无新报错
工具:
轻量:Linux自带top/iostat/df,MySQL自带showstatus/showvariables
可视化:Zabbix(配模板监控指标,超阈值告警)、Prometheus+Grafana(更灵活,支持自定义仪表盘)
二、故障处理类
MySQL启动失败,日志提示“CantopenPIDfile/var/run/mysqld/mysqld.pid”,怎么排查?
答案:
分3步查:
先看路径权限:ls-ld/var/run/mysqld/,确保MySQL用户(通常是mysql)有读写权限,若没有则执行chown-Rmysql:mysql/var/run/mysqld/
再查配置文件:打开my.cnf(路径通常是/etc/my.cnf或/etc/mysql/my.cnf),确认pid-file配置的路径是否存在,若路径写错则修正
最后看是否有残留进程:ps-ef|grepmysqld,若有僵尸进程则kill-9进程号,再重新启动(systemctlstartmysqld)
业务反馈“查询某张表特别慢”,你会怎么定位问题?
答案:
先确认是否是慢查询:开启慢查询日志(临时开启:setglobalslow_query_log=1;长期需改my.cnf加slow_query_log=1和slow_query_log_file=/var/log/mysql/slow.log),设置阈值(setgloballong_query_time=1,超过1秒算慢查询),看该查询是否记录到慢日志
再分析SQL:用explain查看执行计划,看是否走索引(key列是否有值)、是否全表扫描(type列若为ALL就是全表扫)、rows列是否预估行数过大
最后查表结构:desc表名看是否有合适索引,若没有则建索引(createindexidx_字段on表名(字段));若索引存在,看是否有索引失效(比如用了函数、不等于、like%开头),或表数据量过大需分表。
三、性能优化类
MySQL的缓冲池(innodb_buffer_pool_size)怎么设置才合理?设置过大有什么问题?
答案:
合理设置:
单实例MySQL:若服务器只跑MySQL,设为物理内存的50%-70%(比如16G内存设10G);若还有其他服务,预留2-4G给系统和其他进程
查看当前缓冲池使用:showglobalstatuslikeInnodb_buffer_pool_pages_%,若Innodb_buffer_pool_pages_free长期很少,说明需要调大
设置过大问题:
占用过多内存,导致系统swap分区启用(内存不够时用磁盘当内存),IO变高反而拖慢MySQL
重启MySQL时,缓冲池预热时间变长(需要把数据重新加载到内存)
如何减少MySQL的锁等待?
答案:
优化SQL:避免长事务(比如批量更新拆成小批量,减少锁持有时间),不用select...forupdate(除非必须),改用select...lockinsharemode(共享锁比排他锁冲突少)
表设计:用自增主键(避免插入时主键冲突锁),分库分表(减少单表并发冲突)
配置调整:innodb_lock_wait_timeout(锁等待超时时间,默认50秒,可根据业务设短点,比如10秒,避免长期阻塞),开启innodb_deadlock_detect(自动检测死锁并回滚一个事务
文档评论(0)