暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL DBA常见面试题及解答(三)

541

1、数据库高负载的排查和解决办法。

  • 检查操作系统

  1. 查看整体负载,使用命令w或者sar -q 1

  2. 判断瓶颈在哪个子系统,使用命令w

  3. 判断磁盘IO是否较大,使用命令:sar -d 1

  4. 判断具体哪个进程消耗的磁盘IO最多,使用命令:iotop

  • 检查MySQL层

  1. 查看当前的MySQL查询语句,使用命令:mysqladmin pr|grep -v Sleep

  2. 分析slow log

  3. 分析慢查询语句

2、简要说明一下double write的工作机制。

用系统表空间的一块连续磁盘空间(100个连续数据页,大小为2MB)作为doublewrite buffer,当进行脏页刷新时,首先将脏页的副本写到系统表空间的doublewrite buffer 中,之后通过doublewrite buffer再分两次,每次1MB顺序地写入共享表空间的物理磁盘上,然后调用fsync()刷新操作系统IO缓存,最后innodb后台IO线程将脏页刷新到磁盘数据文件。因为doublewrite 页是连续的,因此这个过程是顺序写的,开销并不是很大。

3、半同步复制与异步复制的区别,在5.7做了哪些增强?

  • 异步复制:主库执行完commit提交操作后,在主库写入binlog日志后即可成功返回客户端,无需等待binlog日志传送给从库。

  • MySQL5.7之前的半同步复制:主库在每次事物成功提交时,并不及时反馈给前端应用用户,而是等待其中一个从库也接收到binlog事务并成功写入中继日志后(不等待从库应用这部分日志),主库才返回commit操作成功给客户端。

  • MySQL5.7半同步复制增强:主库将事务写入binlog,传递到从库并写入从库的relay log,主库等待从库反馈接受到relay log的ack之后,再提交事务并且返回commit ok结果给客户端。

4、简单说一下 MySQL5.7有哪些新特性。

  • 从MySQL 5.7开始,root用户的密码不再是空,而是随机产生一个密码

  • 支持JSON

  • MySQL5.7.6支持使用 generated columns(p1875),这一列由其他列计算而得

  • sys schema

  • 可以知道哪些语句使用了临时表,哪个用户请求了最多的io,哪个线程占用了最多的内存

  • 索引利用率和冗余索引统计冗余索引

  • 支持将临时表设置为innodb存储引擎

  • 支持虚拟列

5、如何识别表中的重复索引?

  • 方法一

使用pt-duplicate-key-checker工具

使用方法:pt-duplicate-key-checker --user='root' --password='xxx' --databases=db_name--tables=idx_test --socket=/tmp/mysql.sock

  • 方法二

select * from sys.schema_redundant_indexes

6、MHA在线切换需要满足的条件

  • 1、所有slave的IO和SQL线程都在运行

  • 2、所有Seconds_Behind_Master参数小于或者等于running_updates_limit秒。running_updates_limit默认为1

  • 3、通过show processlist输出,没有一个更新花费的时间大于running_updates_limit秒

7、MySQL常见监控项。

  • 操作系统层面

  1. CPU

  2. 内存

  3. IO

  4. 网卡

  • MySQL层

  1. MySQL是否运行

  2. 连接数

  3. qps

  4. tps

  5. 慢查询数

  6. 打开表数

  7. 当前脏页数

  8. 锁情况

  9. 主从同步状态(包括Slave_IO_Running、Slave_SQL_Running、Seconds_Behind_Master等)

8、MySQL备份策略。

  • 配置从库

  • 每天一次全备,开启binlog,实时将主库binlog同步到远程服务器上。

  • 务必进行恢复性测试

9、双一的意义。

innodb_flush_log_at_trx_commit=1

每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去

sync_binlog=1

MySQL 在每写 1次 binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去

保证了数据的安全性,

10、PXC执行SQL的原理。

节点接收sql请求后,在commit之前,有wsrep API调用galera库进行集群内广播,所有其它节点验证成功后事务在集群所有节点进行提交,反之roll back



本文分享自微信公众号 - MySQL数据库联盟,如有侵权,请联系 service001@enmotech.com 删除。
最后修改时间:2019-12-20 11:33:18
文章转载自MySQL数据库联盟,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论