MySQL DBA基本面试题个人总结

一.基础知识

1.MYSQL逻辑上可以分为多少层? 

    SQL层:查询的解析,优化,执行

    存储引擎:数据存储,锁,事务管理,恢复

 

2.存储引擎最常用有那些?简单的描述下

     

MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。

InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。

BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。

Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。

Merge:允许MySQLDBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。

Archive:为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。

Federated:能够将多个分离的MySQL服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。

Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序。

3,简述在MYSQL数据系统里最常见的系统瓶项有那些?

 

    1.磁盘搜索。

    2.磁盘读/写

    3.CPU周期        

    4.内存带宽

备注:

磁盘搜索。需要花时间从磁盘上找到一个数据,用在现代磁盘的平均时间通常小于10ms,因此理论上我们能够每秒大约搜索1000次。这个时间在新磁盘上提高不大并且很难为一个表进行优化。优化它的方法是将数据分布在多个磁盘上。

磁盘读/写。当磁盘放入正确位置后,我们需要从中读取数据。对于现代的磁盘,一个磁盘至少传输10-20Mb/s的吞吐。这比搜索要容易优化,因为你能从多个磁盘并行地读。

CPU周期。我们将数据读入内存后,需要对它进行处理以获得我们需要的结果。表相对于内存较小是最常见的限制因素。但是对于小表,速度通常不成问题。

内存带宽。当CPU需要的数据超出CPU缓存时,主缓存带宽就成为内存的一个瓶颈。这在大多数系统正是一个不常见的瓶颈但是你应该知道它

4.MYSQL的备份有多少种,请简要的描述:

 

    A.直接拷贝数据文件到安全地方进行保存

    B.使用MYSQLHOSTCOPY备分数据

    C.使用MYSQLDUMP备份数据

    D.使用MYSQL的同步复制,实现数据实时数据同步备份

5.MYSQL CLUSTER 的环境主要由那三部份组成的?

    1.管理各个节点的MANAGE节点主机

    2.SQL层的SQL服务器节点

    3.STORAGE层的NDB数据节点。


 

二.综合题

1. 为什么要对MYSQL的表进行分区

 

    1.与单个磁盘或文件系统分区相比,可以存储更多的数据

    2. 对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有关的分区,很容易地删除那些数据。相反地,在某些情况下,添加新数据的过程又可以通过为那些新数据专门增加一个新的分区,来很方便地实现。

    3. 一些查询可以得到极大的优化

    4. 涉及到例如SUM()和COUNT()这样聚合函数的查询,可以很容易地进行并行处理

    5. 通过跨多个磁盘来分散数据查询,来获得更大的查询吞吐量

2. 简述MYSQL的常用的优化工具或监控工具有那些?

    Mysqlreport,mysqlsla

    Iostat ,vmstat,top

3. .优化INNODB性能会考虑那几方面?

     1基础设施:硬件,CPU,内存,磁盘等

     2操作系统;OS是基于LINUX还是WINDOS同,及32位还是64位

     3.MYSQL的INNODB的设置,如:innodb_buffer_pool_size ,innodb_log_file_size ,innodb_log_buffer_size,innodb_flush_log_at_trx_commit,innodb_thread_concurrency,等

    4.生产应用

    5.标准的SQL编写

 

4. Mysql用户与权限管理:

    A)开放DBA用户管理MySQL中具体数据库(testdb)的权限; 

grant all privileges on testdb todba1@'192.168.0.10'identified by "dbapasswd";

    B)开放user用户管理MySQL中具体数据库的表(testdb.table1)的权限 

    grant all on testdb.teable1 touser@'192.168.0.10'identified by "dbapasswd";

    C)开放user用户管理MySQL中具体数据库的表(testdb.table1)的部分列的权限

     grant select(id, se, rank) on testdb.table1to user@'192.168.0.10'identified by "dbapasswd";

 

5. 写出INNODB存储引擎的基于二进制时间点的备份与恢复,mysql的安装目录为:/usr/local/mysql,数据库名为:db

全备份:/usr/local/mysql/bin/mysqldump --single-transaction--flush-logs --master-data=2 -u root -p*** db1>full_0625.sql

增量备份:用 flush logs 来生成数据库增量备份(二进制日志文件)

mysqladmin -u root -p*** flush-logs

每隔一段时间执行此步骤,来生成增量备份文件,例如,每半小时或者每15分钟。

恢复:

第一种恢复    

首先:

/usr/local/mysql/bin/mysq -u root -p db1<full_0625.sql

然后:

mysqlbinlog mysql-bin.000002 | mysql

mysqlbinlog mysql-bin.000003 | mysql

mysqlbinlog mysql-bin.000004 | mysql

mysqlbinlog mysql-bin.000005 | mysql

第二种恢复

1. /usr/local/mysql/bin/mysq -u root -p db1<full_0625.sql

2. 使用MySQL工具 mysqlbinlog 来把增量备份产生的二进制文件转化为 SQL 文本文件

mysqlbinlog -u root -p*** mysql-bin.000002 >mysql-bin.000002.sql

3. 依次使用 MySQL 数据库增量备文件,来恢复数据库

mysql -uroot -p***<mysql-bin.000001.sql

mysql -uroot -p***<mysql-bin.000002.sql

mysql -uroot -p***<mysql-bin.000003.sql

mysql -uroot -p***<mysql-bin.000004.sql

mysql -uroot -p***<mysql-bin.000005.sql


 

6. 获取MYSQL锁的等待情况可以通过检查那个变量来了解表的争夺

table_locks_waited,table_locks_immediate

 

7. 请写出MYSQL常用自带工具的五种?

Mysql,mysqladmin, mysqldump,mysqlhotcopy,mysqldumpslow

 

8. 优化INNODB性能会考虑那几方面?

 待补充

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值